IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

PHP ne craint plus, examinons les changements de langage intervenus depuis la sortie de PHP 5.4


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2024
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2024
    Messages : 1
    Points : 7
    Points
    7
    Par défaut PHP ne craint plus, examinons les changements de langage intervenus depuis la sortie de PHP 5.4
    PHP ne craint plus, examinons les changements de langage intervenus depuis la sortie de PHP 5.4, par Víctor Falcón Ruíz

    Je suis fatigué de lire toujours le même message : « PHP, c'est nul ». Mais la plupart de ces critiques n'ont pas regardé PHP depuis 2012, et beaucoup de choses ont changé depuis.


    Jetons un coup d'œil aux changements de langage qui ont eu lieu depuis la sortie de PHP 5.4.

    Traits (PHP 5.4)

    PHP 5.4 a introduit les traits, qui permettent la composition plutôt que l'héritage. Vous pouvez avoir des traits et les inclure dans chaque classe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    trait SayWorld {
        public function sayHello() {
            echo 'World!';
        }
    }
     
    class MyHelloWorld {
        use SayWorld;
    }

    Syntaxe de tableau courte

    L'époque où l'on écrivait array() comme un homme des cavernes est révolue. Vous pouvez désormais utiliser les crochets pour une syntaxe de tableau courte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $newArray = [
      'first',
      'second',
      'third'
    ];

    Destructuration de tableau

    L'affectation d'un tableau à une variable temporaire appartient au passé. Vous pouvez désormais utiliser la déstructuration de tableau pour affecter directement des variables à partir d'un tableau.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $newArray = [
      'first',
      'second',
      'third'
    ];
     
    $anotherArray = [
      ...$newArray,
      'fourd',
      'fifth'
    ];

    Fonctions variadiques de première classe

    Vous pouvez passer autant d'arguments que vous le souhaitez à une fonction en utilisant la syntaxe ....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    class Variadic {
      public function query($query, ...$attributes) {
        var_dump($query, $attributes);
      }
    }
     
    $v = new Variadic();
     
    $v->query('select * from users', 1, 'Víctor');
     
    // result 'select * from users', 1, 'Víctor'

    Générateurs

    Vous avez besoin de faire quelque chose qui demande beaucoup de mémoire de manière efficace ? Les générateurs sont la solution. Vous trouverez ici plus d'informations sur les générateurs.

    Classes anonymes

    Vous avez besoin d'une nouvelle classe, mais vous n'avez pas le temps de créer un nouveau fichier ? Les classes anonymes sont la solution. Elles peuvent implémenter une interface comme n'importe quelle autre classe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $anonymousClass = new class{
      public $property = 1;
     
      public function add(int $x): int
      {
        return $this->property + $x;
      }
    }
     
    echo $anonymousClass->propert; // 1
    echo $anonymousClass->add(2);  // 3

    Virgules flottantes (PHP 7)

    Plus besoin de se préoccuper de l'ajout d'une virgule finale à un appel de fonction ou de méthode.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    class TrailingComma {
      public function action(
        int $x,
        int $y, // <- This comma causes an error before
      ) {
        echo $x + $y;
      }
    }

    Fonctions fléchées

    PHP dispose également de fonctions fléchées. Elles ne sont pas exactement comme celles de JavaScript, mais elles sont un excellent ajout au langage.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $y = 1;
     
    $fn1 = fn($x) => $x + $y;
     
    $x = $fn1(2); // 3

    Opérateur de coalescence Null (PHP 7)

    Plus besoin de vérifier la présence de null avant d'assigner une valeur. L'opérateur null coalescent vous couvre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // If user is null or undefined, 'nobody' is assigned
    $username = $_GET['user'] ?? 'nobody';

    Assignation avec l'opérateur de coalescence Null (PHP 7.4)

    Et si vous avez besoin de raccourcir l'opérateur de coalescence null, il y a un opérateur d'assignation pour cela aussi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // Value of $_GET['user'] change if is undefined or null
    $_GET['user'] ??= 'nobody';

    Opérateur de chaînage Null (PHP 8)

    Plus besoin de vérifier la présence de null avant d'appeler une méthode. L'opérateur de chaînage null est là pour sauver la situation.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    class Customer {
        public function getAddress(): ?Address {}
    }
     
    class Address {
        public function getCountry(): string {}
    }
     
    // Null if no Address
    $country = $customer->getAddress()?->getCountry();

    Arguments nommés (PHP 8)

    Vous en avez marre d'utiliser null pour ignorer les arguments optionnels ? Les arguments nommés sont la solution.

    Imaginez que vous avez une fonction avec beaucoup d'arguments, dont certains sont nullables.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function takes_many_args(
        $first_arg,
        $second_arg = 'any',
        $third_arg = 5,
    )
    {
        // ...
    }

    Avant vous devez envoyer le $second_arg par défaut, même si vous ne le changez pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    takes_many_args('first', 'any', 3);

    Maintenant, vous pouvez simplement faire quelque chose comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    takes_many_args('first', third_arg: 3);

    Instruction match (PHP 8)

    Fini les instructions switch qui font des kilomètres de long. L'instruction match est une façon plus compacte et plus lisible d'écrire les instructions switch.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $food = 'cake';
     
    $return_value = match ($food) {
      'apple' => 'This food is an apple',
      'bar' => 'This food is a bar',
      'cake' => 'This food is a cake',
      default => 'Unknown food',
    };
     
    var_dump($return_value); // 'This food is a cake'

    Enums (PHP 8.1)

    Les enums sont enfin là ! Vous pouvez créer des classes enum avec des valeurs et des méthodes, et même les utiliser comme indices de type.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    enum Suit
    {
        case Hearts;
        case Diamonds;
        case Clubs;
        case Spades;
    }
     
    function do_stuff(Suit $s)
    {
        // ...
    }
     
    do_stuff(Suit::Spades);

    Sûreté des types

    PHP a maintenant des arguments typés, des types de retour, des types d'union, des types d'intersection, et plus encore. Vous pouvez même utiliser des indices de type pour les enums !

    Nous pouvons maintenant ajouter des types aux arguments, aux valeurs de retour, aux propriétés des classes, aux constantes, et à presque tout.

    Nom : screenshot-2024-05-09-20.54.40.png
Affichages : 183155
Taille : 62,8 Ko

    Promotion des propriétés du constructeur (PHP 8.0)

    Le temps des constructeurs verbeux est révolu. La promotion des propriétés du constructeur est là pour réduire le code de la chaudière.

    C'est l'un des meilleurs ajouts à PHP, maintenant les classes sont super simples et nous n'avons pas besoin d'écrire les propriétés de classe plus d'une fois.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class Customer
    {
        public function __construct(
            public string $name, 
            public string $email, 
        ) {}
    }

    Propriétés ReadOnly (PHP 8.1)

    Maintenant, nous n'avons plus besoin de créer des getters et setters personnalisés et de définir une visibilité privée pour chaque méthode.

    Avec le flag readonly, nous pouvons protéger nos propriétés des modifications en dehors de la classe elle-même.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class Customer
    {
        public function __construct(
            readonly public string $name, 
            readonly public string $email, 
        ) {}
    }

    En PHP 8.3, les classes anonymes readonly (en lecture seule) ont été ajoutées.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $class = new readonly class {
        public function __construct(
            public string $name = 'Víctor',
        ) {}
    };

    Performance

    Les performances de PHP ont augmenté de 400 % entre la version 5.6 et la version 7, et de 20 % entre la version 7 et la version 8.

    Il est suffisamment rapide pour la plupart des cas d'utilisation, et si vous avez besoin d'un cas d'utilisation spécialisé, utilisez un langage spécialisé.

    Conclusion

    En conclusion, PHP n'est pas mort, et il n'est plus nul. Le langage a subi des changements significatifs depuis 2012, et il est grand temps de réviser nos opinions à son sujet.

    Avec l'introduction des traits, de la syntaxe de tableau courte, de la déstructuration de tableau, et d'une foule d'autres fonctionnalités, PHP est devenu un langage plus efficace, plus lisible, et plus facile à maintenir.

    Ajoutez à cela les améliorations dans la gestion des erreurs, l'introduction des attributs et l'arrivée tant attendue des enums, et il est clair que PHP est devenu un choix robuste et fiable pour le développement web.

    Ainsi, la prochaine fois que quelqu'un vous dira que PHP est nul, vous pourrez lui répondre en toute confiance qu'il est resté dans le passé.

    Source : "PHP Doesn't Suck Anymore" (par Víctor Falcón Ruíz)

    Et vous ?

    Quel est votre avis sur le sujet ?
    Partagez-vous l'avis selon lequel PHP serait nul ? Selon vous, pourquoi le langage souffre-t-il d'une telle réputation auprès de certains utilisateurs ?

    Voir aussi :

    PHP 8.2 est disponible et s'accompagne des propriétés "en lecture seule" aux classes, ainsi que la possibilité de déprécier les propriétés dynamiques

    PHP 8.3, mise à jour majeure du langage PHP, est disponible, parmi les nouvelles fonctionnalités : le typage explicite des constantes de classe, le clonage profond des propriétés en lecture seule

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Créateur de services
    Inscrit en
    Mai 2023
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Créateur de services

    Informations forums :
    Inscription : Mai 2023
    Messages : 21
    Points : 30
    Points
    30
    Par défaut PHP et ses concurrents
    Bonjour,

    Et merci pour ce comparatif.

    Quel est le taux de compétence de PHP pour la création d'un site aujourd'hui ?
    Quel sont ses langages concurrents, quel est leur taux de compétence, et couvrent-ils l'entièreté des fonctionnalités de PHP ? (ex : comparatif entre un bon diesel et un véhicule électrique ).

    Je suis par avance désolé si mes questions sont hors de propos.

    Je suis débutant sur PHP, que je trouve intéressant par les fonctionnalités qu'il autorise mais aussi inquiet de savoir qu'il est identifié comme obsolète ou archaïque aujourd'hui.

    Merci pour vos réponses.

  3. #3
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 674
    Points : 43 728
    Points
    43 728
    Par défaut
    Pour ce que j'en sais, les principaux autres langages utilisés pour faire du web sont le Go, Python
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Créateur de services
    Inscrit en
    Mai 2023
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Créateur de services

    Informations forums :
    Inscription : Mai 2023
    Messages : 21
    Points : 30
    Points
    30
    Par défaut
    Merci pour la réponse.
    Je ne connaissais pas Go. Je viens de découvrir qu'il y avait Ruby on Rails également.

  5. #5
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 674
    Points : 43 728
    Points
    43 728
    Par défaut
    Ma liste n'était pas forcément exhaustive
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  6. #6
    Membre chevronné
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 143
    Points : 2 194
    Points
    2 194
    Billets dans le blog
    3
    Par défaut
    J'ai aimé ce langage et il était encore mon préféré avec c# en 2002-2004... Mais on va pas se mentir : ça fait des années que les évolutions sont minimes et avec peu d'intérêt, tellement les évolutions des autres langages (python, c#, java par exemple) sont énormes.

    Je peux faire un tableau de génériques en php ? non
    Je peux surcharger une méthode avec params supplémentaires ? non
    Des VRAIS getters setters ? non (les méthodes avec "get" devant le nom, c'est du gros fake puisque si je sors l'objet en JSON : ben les propriétés sortent pas puisque getMaPropriété n'est pas une prop mais une méthode... bref)

    Allez bim, 3 exemples objet de base que php ne peut toujours pas faire... en 2024 c'est plus possible...
    .o0o__St@iLeR__oOo.

    Lead Developer

    ASP.NET MVC - MCP/MCSD ASP.NET
    PHP Zend Framework / PhalconPHP
    Cordova/Xamarin IOS/Android
    Kendo UI - ExtJS - JQwidgets
    SQL Server / MySQL

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Créateur de services
    Inscrit en
    Mai 2023
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Créateur de services

    Informations forums :
    Inscription : Mai 2023
    Messages : 21
    Points : 30
    Points
    30
    Par défaut
    Merci pour cette précision.
    En ce qui me concerne, mon niveau étant très bas, le Flight Level des objets cités n'est pas dans mon objectif.
    J'espère me mettre sérieusement à PHP, tenter de maîtriser la conception d'un site avec liaison à une base de donnée MySql. Ensuite, verra qui pourra.

  8. #8
    Membre averti Avatar de Freudd
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2014
    Messages
    165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2014
    Messages : 165
    Points : 379
    Points
    379
    Par défaut
    Citation Envoyé par stailer Voir le message
    Des VRAIS getters setters ? non (les méthodes avec "get" devant le nom, c'est du gros fake puisque si je sors l'objet en JSON : ben les propriétés sortent pas puisque getMaPropriété n'est pas une prop mais une méthode... bref)
    ça dépend à partir de quand en 2024, car dans la version 8.4 qui sortira en fin novembre il y a des VRAIS getters setters https://wiki.php.net/rfc/property-hooks

    Allez bim, un exemple de moins
    Mon projet CMS https://soosyze.com/
    Son repo github https://github.com/soosyze/soosyze

    Open source tools and free yes, but with elegance .

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Créateur de services
    Inscrit en
    Mai 2023
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Créateur de services

    Informations forums :
    Inscription : Mai 2023
    Messages : 21
    Points : 30
    Points
    30
    Par défaut
    "car dans la version 8.4 qui "sortira" en fin novembre" ?????
    Stailer n'a donc pas si tord.

  10. #10
    Membre chevronné
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 143
    Points : 2 194
    Points
    2 194
    Billets dans le blog
    3
    Par défaut
    "Allez bim, un exemple de moins "

    Ouaaaa, on pourra faire des vrais getters/setters, en prod en 2025 ??!!! Mais c'est incroyable ! quelle avancée au niveau objet du langage... Et sinon les tableaux d'objets c'est pour quand ? 2036 ? Sérieux...............

    En plus c'était vraiment des exemples simples. Je pourrais t'en citer 2000 autres malheureusement.
    .o0o__St@iLeR__oOo.

    Lead Developer

    ASP.NET MVC - MCP/MCSD ASP.NET
    PHP Zend Framework / PhalconPHP
    Cordova/Xamarin IOS/Android
    Kendo UI - ExtJS - JQwidgets
    SQL Server / MySQL

  11. #11
    Membre chevronné
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 143
    Points : 2 194
    Points
    2 194
    Billets dans le blog
    3
    Par défaut
    A titre personnel (et je comprends qu'on soit pas d'accord), il y a aussi des évolutions de "non-sens" sur le langage.

    Par exemple, on peut multi-typer une méthode !!! Je trouve ça flou et très dangereux. Par exemple on pourrait se retrouver avec ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public function getUnMachin(Document|Repertoire|Client $jesaispas) : MonCousin|Voiture|int|bool {
       return $moncousin_OU_mavoiture_OU_monint_OU_monbool; 
    }
    C'est complètement fou d'avoir donné cette possibilité... Mon exemple est très exagéré mais il fonctionne ! Quelle ineptie : le but de l'objet est bien davoir des... objets. Pas de dire que je veux passer n'importe quoi pour que n'importe quoi puisse me retourner n'importe quoi d'autre.

    Alors dans ces cas là autant revenir à php5 !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public function getUnMachin($jesaispas){
     
    }
    Voilà... ça revient presque à ça. Je suis vraiment pas d'accord avec cet ajout qu'ils ont fait sur le langage.
    .o0o__St@iLeR__oOo.

    Lead Developer

    ASP.NET MVC - MCP/MCSD ASP.NET
    PHP Zend Framework / PhalconPHP
    Cordova/Xamarin IOS/Android
    Kendo UI - ExtJS - JQwidgets
    SQL Server / MySQL

  12. #12
    Membre chevronné
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 143
    Points : 2 194
    Points
    2 194
    Billets dans le blog
    3
    Par défaut
    "Nous pouvons maintenant ajouter des types aux arguments, aux valeurs de retour, aux propriétés des classes, aux constantes, et à presque tout."

    Aller, encore une petite couche pour me faire plaisir

    "presque tout" .... ou "presque rien" ? Est-ce que je peux typer une variable ? Et ben non.... Toujours pas.

    Je peux toujours pas faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public function methodSample() : void{
       
        int $x = 4; 
        $x = 'cool'; 
    
    }
    au pire on pourrait faire le code suivant comme en c# :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public function methodSample() : void{
       
        var $x = 4; 
        $x = 'cool'; 
    
    }
    Mais non, on peut pas.

    T'as une variable qui peut commencer par être un int, devenir une chaine et finir par être un objet en fin de méthode. Si tu tombes sur un projet avec un dév pas bon et qui a connut que PHP, le gars il a fait ça partout c'est une certitude.
    .o0o__St@iLeR__oOo.

    Lead Developer

    ASP.NET MVC - MCP/MCSD ASP.NET
    PHP Zend Framework / PhalconPHP
    Cordova/Xamarin IOS/Android
    Kendo UI - ExtJS - JQwidgets
    SQL Server / MySQL

  13. #13
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 674
    Points : 43 728
    Points
    43 728
    Par défaut
    Tu peux typer des variables mais ce n'est pas par défaut et je ne connais pas les éventuelles limites, je suis pas spécialiste PHP.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  14. #14
    Membre expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 790
    Points : 3 056
    Points
    3 056
    Par défaut
    Hello

    On peut typer les variables et on peut définir strict_types sur 1 pour interdire les variables pouvant être définies de plusieurs types possibles.

    Oui php 4 et 5 étaient médiocre, oui php 7 a apporté une réelle amélioration poursuivie avec php 8.

    Alors oui, pour des questions de compatibilité, des vieux codes écrit par des néophytes continuent à pouvoir être exécutés (si on se moque des alertes) mais il ne serait pas correct de dire que le langage n'a pas évolué.

    Oui, cela demande de la rigueur et oui il est bon d'utiliser plusieurs outils d'analyse de code comme phan, phpmd, phpcs et d'autres (donc oui on peut faire du portnawak) mais toujours oui, on peut faire de très propre.

    Php est accessible à des débutants, c'est une cause de bien des maux. Mais c'est aussi une force dont ne peut qu'être jaloux de langages plus restrictifs comme C++ pour n'en citer qu'un.
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be

  15. #15
    Membre chevronné
    Avatar de stailer
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2003
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 143
    Points : 2 194
    Points
    2 194
    Billets dans le blog
    3
    Par défaut
    Je vois bien les pouces vers le bas qui s'accumulent, ça m'amuse parce que les arguments techniques ne pleuvent pas

    "On peut typer les variables et on peut définir strict_types sur 1 pour interdire les variables pouvant être définies de plusieurs types possibles." oui je sais, super, génial... Mais tu peux pas typer quand même lorsque tu veux vraiment mettre un type. ça reste du "var" ... On va pas se mentir, tout ça est très bricolage.

    Et c'est trop tard aujourd'hui, encore une fois : il manque trop de choses et il contient à côté des évolutions vraiment pas prioritaires en 2024 (voir mon précédent exemple du multi typage).

    "Mais c'est aussi une force dont ne peut qu'être jaloux de langages plus restrictifs comme C++ pour n'en citer qu'un."

    Ouais, pendant longtemps je pestais sur les dév d'autres langages qui critiquaient php pour des mauvaises raisons. L'un de ses points forts est le dynamisme et le côté "chewing gum" de l'introspection. On peut en effet facilement développer ses propres librairies, gérer des cas de propriétés dynamiques, son propre framework (d'ou le nb de framework existants d'ailleurs) etc. Ceci est son bon côté. Mais contrairement à 2005 il manque trop de choses de bases et d'autres langages ont explosé avec leur lot de performances (python par ex) et capacités objets sans cesse en amélioration (csharp par ex).

    Pour info je suis actuellement lead dev php et je pense qu'il faut savoir mettre à plat les fonctionnalités de tel ou tel langage pour comparer, plutôt qu'un soutien inconditionnel.

    Merci pour les pouces vers le bas
    .o0o__St@iLeR__oOo.

    Lead Developer

    ASP.NET MVC - MCP/MCSD ASP.NET
    PHP Zend Framework / PhalconPHP
    Cordova/Xamarin IOS/Android
    Kendo UI - ExtJS - JQwidgets
    SQL Server / MySQL

  16. #16
    Membre expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 790
    Points : 3 056
    Points
    3 056
    Par défaut
    Citation Envoyé par stailer Voir le message
    Merci pour les pouces vers le bas
    Aucun de ma part, c'est dommage que ce soit anonyme d'ailleurs. Pour le reste, tout avis et interventions constructives et respectueuses est une excellente chose.
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be

  17. #17
    Membre expert Avatar de air-dex
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 665
    Points : 3 810
    Points
    3 810
    Par défaut PHP ou le langage du délit de sale gueule
    PHP s'est en effet clairement amélioré, surtout depuis PHP 5. Ceux qui veulent le débiner s'efforceront de faire perdurer l'image de PHP 4.

    PHP traîne également quelques autres boulets quant à sa réputation. Le principal vient des CMS et de leurs paramétrages WYSIWYG pour noobs, le roi d'entre eux étant WordPress. Idéal quand PHP 4 ne suffit pas.

    Citation Envoyé par chrtophe Voir le message
    Pour ce que j'en sais, les principaux autres langages utilisés pour faire du web sont le Go, Python
    Côté Web voici une liste plus ou moins exhaustive des concurrents de PHP pour du backend Web :
    • Java (Jakarta EE, Spring).
    • JavaScript (Node.js, Express.js).
    • Python (Django).
    • Ruby (Ruby on Rails).
    • Perl


    Après PHP ne s'utilise pas forcément pur, mais souvent avec des frameworks comme Symfony ou Laravel.

    PHP c'est aussi les CMS, à commencer par WordPress.

    Enfin rien n'empêche de s'en servir comme d'un bête langage de script sans fonctionnalités Web, à l'instar de Python ou de Node.js.
    "Ils ne savaient pas que c'était impossible alors ils l'ont fait." Mark Twain

    Mon client Twitter Qt cross-platform Windows et Linux. (en cours de développement).

  18. #18
    Nouveau membre du Club
    Homme Profil pro
    Créateur de services
    Inscrit en
    Mai 2023
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Créateur de services

    Informations forums :
    Inscription : Mai 2023
    Messages : 21
    Points : 30
    Points
    30
    Par défaut
    Citation Envoyé par cavo789 Voir le message
    Aucun de ma part, c'est dommage que ce soit anonyme d'ailleurs. Pour le reste, tout avis et interventions constructives et respectueuses est une excellente chose.
    Je vous ai mis un pouce vers le haut.

    Le sujet est plutôt chaud, vu des lignes arrières.

    Merci Air-dex pour la liste des langages.

  19. #19
    Nouveau membre du Club
    Homme Profil pro
    Créateur de services
    Inscrit en
    Mai 2023
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Créateur de services

    Informations forums :
    Inscription : Mai 2023
    Messages : 21
    Points : 30
    Points
    30
    Par défaut
    Citation Envoyé par air-dex Voir le message
    ...
    Côté Web voici une liste plus ou moins exhaustive des concurrents de PHP pour du backend Web :
    • Java (Jakarta EE, Spring).
    • JavaScript (Node.js, Express.js).
    • Python (Django).
    • Ruby (Ruby on Rails).
    • Perl


    Après PHP ne s'utilise pas forcément pur, mais souvent avec des frameworks comme Symfony ou Laravel.

    PHP c'est aussi les CMS, à commencer par WordPress.

    Enfin rien n'empêche de s'en servir comme d'un bête langage de script sans fonctionnalités Web, à l'instar de Python ou de Node.js.
    Merci pour cette description exhaustive et la liste des logiciels disponibles. Ces logiciels sont côté Web, alors peuvent-ils gérer les connexions avec une base de données ? Merci pour votre réponse.

    Je souhaite créer un site lié à une base de données, et les CMS que je connais, WordPress et E-monsite(celui que j'utilise pour des sites une page) ne permettent pas cette construction.

    WordPress est déjà limité quant à la personnalisation de la présentation d'un site une page, c'est très frustrant, alors je le fuis. Il a été conçu au départ pour créer un blog, ce qui est annoncé dès la création, et c'est malin de la part de la maintenance, il y a moins de problèmes à traiter.

  20. #20
    Membre expert Avatar de air-dex
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 1 665
    Points : 3 810
    Points
    3 810
    Par défaut
    Citation Envoyé par pascalbaudry Voir le message
    Merci pour cette description exhaustive et la liste des logiciels disponibles. Ces logiciels sont côté Web, alors peuvent-ils gérer les connexions avec une base de données ? Merci pour votre réponse.

    Je souhaite créer un site lié à une base de données, et les CMS que je connais, WordPress et E-monsite(celui que j'utilise pour des sites une page) ne permettent pas cette construction.

    WordPress est déjà limité quant à la personnalisation de la présentation d'un site une page, c'est très frustrant, alors je le fuis. Il a été conçu au départ pour créer un blog, ce qui est annoncé dès la création, et c'est malin de la part de la maintenance, il y a moins de problèmes à traiter.
    Non là ce sont d'abord des sites qui mâchent tout le travail de développement à leurs utilisateurs. Savoir utiliser ces sites ce n'est pas savoir développer des sites.

    Le "vrai" WordPress (de chez wordpress.org et non pas wordpress.com), tu le télécharges, tu l'installes toi-même sur un serveur Apache qui est une machine hébergé par tes propres soins ou chez un hébergeur (OVH par exemple). Une installation pour laquelle une BDD est requise puisque WP ne peut fonctionner sans BDD associée. Ensuite tu devras tout paramétrer de toi-même, rajouter les plugins qui vont bien, et s'ils ne peuvent faire ce que tu veux les coder toi-même en PHP, HTML, CSS et JS (et plus si affinités). Bref mettre les mains dans le cambouis du dev et de l'infra, ce n'est pas la même chose du tout car là t'auras pas d'e-monsite ou de Wix pour te mâcher le travail).
    "Ils ne savaient pas que c'était impossible alors ils l'ont fait." Mark Twain

    Mon client Twitter Qt cross-platform Windows et Linux. (en cours de développement).

Discussions similaires

  1. Réponses: 8
    Dernier message: 15/01/2020, 10h58
  2. Réponses: 24
    Dernier message: 09/09/2018, 11h14
  3. [CSS] Probleme dans les changements de couleurs
    Par caneman dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 30/07/2005, 18h43
  4. les changements du protocol ipv4 ----> ipv6
    Par m-unix dans le forum Développement
    Réponses: 1
    Dernier message: 26/10/2004, 19h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo