Pourquoi 2013 est l'année du PHP

L'année 2012 a été une excellente année pour la communauté PHP, grâce à l'ajout de nombreuses fonctionnalités indispensables à la version 5.4, ainsi qu'à la multitude de projets qui font progresser PHP au prochain niveau..

Dans cet article, j'aimerais passer en revue une poignée de problèmes que les gens avaient avec PHP dans le passé et donner un aperçu de la raison pour laquelle 2013 pourrait bien être l'année de PHP.!


Pourquoi l'hostilité?

Cela peut vous surprendre, mais beaucoup de gens ont des sentiments négatifs à l’égard des développeurs PHP et de la langue dans son ensemble. Vous savez probablement ce que je veux dire, si vous avez envisagé d'apprendre Ruby au cours des deux dernières années, en raison de la pression exercée par les pairs.

Cependant, avant d'apporter des modifications, vous devez vous demander: "Pourquoi PHP est-il si stigmatisé?"

Eh bien, comme beaucoup de questions importantes de la vie, il n’ya pas de réponse claire. Après quelques recherches en ligne sur certains arguments PHP, vous constaterez qu'environ 80% des arguments contre PHP sont fondés sur l'ignorance, sous une forme ou une autre..

Environ quatre-vingt pour cent des arguments contre PHP sont fondés sur l'ignorance.

Les débutants

Il y a les débutants qui ne savent pas vraiment comment fonctionne PHP. Cela entraîne des questions, comme "Pourquoi ne pouvez-vous pas écouter les événements de bouton avec PHP??,"et des questions similaires sur AJAX.

Une langue pour les gouverner tous

Ensuite, vous avez les gens qui ne connaissent pas de langage ou de framework autre que celui qu’ils utilisent actuellement. Ce sont les types de personnes qui font des arguments, tels que "Rails est beaucoup plus facile que PHP," et des choses dans le genre.

Combattre PHP 4

La troisième forme d’erreur provient des personnes qui n’ont pas suivi les progrès de PHP au fil des ans. Au lieu de cela, ils luttent toujours contre le langage, tel qu'il existait il y a des années. Il en résulte des déclarations telles que: "PHP n'est pas orienté objet" ou "PHP craint parce qu'il ne supporte pas le namespacing." Vous avez eu l'idée.

Mise à l'échelle

Enfin, nous avons des développeurs plus intelligents qui pensent que "PHP ne peut pas évoluer" ou que "PHP n'a pas de normes", ce qui est complètement faux. La mise à l'échelle a moins à voir avec la langue qu'avec le serveur et avec la structure de votre application. En ce qui concerne les normes? Eh bien, il suffit d'une recherche rapide sur Google pour PHP-FIG.

Quel est le PHP-FIG? "L’idée derrière le groupe est que les représentants de projet discutent des points communs entre nos projets et trouvent des moyens de travailler ensemble. Notre public principal est l’autre, mais nous sommes bien conscients que le reste de la communauté PHP surveille la situation. les autres veulent adopter ce que nous faisons, ils sont les bienvenus, mais ce n'est pas le but. "

C’est une vérité regrettable que certains arguments, qui traversent le Web, sont complètement faux ou mis à jour..


PHP n'est pas parfait

Il y a du vrai dans toutes les critiques, cependant.

Il y a cependant du vrai dans toutes les critiques. PHP n'est pas parfait. En ce qui concerne l’implémentation des principales fonctionnalités, PHP est incohérent. Ces arguments sont tout à fait valables.

Ces incohérences ne sont cependant pas sans raison. PHP a commencé comme ce que nous appelons aujourd'hui un langage basé sur des modèles. Depuis lors, il a connu de multiples changements de paradigme, se transformant en un langage fonctionnel, tel que C, puis en un langage entièrement POO dont nous jouissons aujourd'hui. Au fil du temps, les meilleures pratiques ont émergé et différentes personnes ont contrôlé ce qui a été ajouté. Il en résulte beaucoup de types de code "différents" dans une langue. Maintenant, vous pourriez demander, "Pourquoi ne pas simplement déconseiller les mauvaises parties?"

La réponse à cette question est la même pour expliquer pourquoi nous continuons de créer des sites pour les anciennes versions d’Internet Explorer. Ne vous méprenez pas; J'aimerais bien le laisser tomber, mais des changements aussi importants que celui-ci ne peuvent être apportés sans un peu de temps. Espérons qu'avec le temps, PHP avancera plus loin dans la POO et commencera à convertir ses objets pour qu'ils utilisent leurs fonctions avec la notation par points, plutôt que par la maladroite -> syntaxe. Donc, au lieu de array_push ($ arr, "Value");, tu écrirais quelque chose comme $ arr.push ("Value");.

Ne t'inquiète pas des choses comme celle-ci se sont produites lentement. Il suffit de regarder les nouvelles fonctionnalités de PHP 5.5. L'ancien add-on MySQL orienté fonction est devenu obsolète au profit de la nouvelle approche orientée objet..


Le présent

Maintenant que le passé est couvert, passons au présent. Il existe une poignée de projets et de mouvements vraiment sympas, dont certains empruntent des idées d'autres langages, afin de propulser PHP au niveau supérieur..

Considérons ce qui suit:

  • Compositeur
  • Laravel
  • Développement piloté par les tests
  • PHP 5.4 / 5.5

Compositeur

La communauté PHP peut maintenant cesser de réinventer la roue encore et encore, grâce à Composer.

Inspirée par des outils tels que Bundler et NPM, la communauté PHP peut désormais cesser de réinventer la roue encore et encore grâce à Composer. Node.js a été la première langue qui m'a fait sentir à l'aise avec l'utilisation de packages. Si vous l'avez déjà utilisé, vous savez ce que je veux dire. Les packages sont installés localement dans le répertoire de votre projet, il est facile de trouver la documentation de la plupart des plugins et il est relativement simple de soumettre vos propres packages..

POIRE?

Pendant des années, PHP proposait une alternative, PEAR, mais ce n’était pas trop intuitif ni facile à utiliser. Cela semblait volumineux pour quelque chose qui allait finalement chercher des fichiers en texte brut. De plus, il a installé tous les paquets globalement. Cela vous a obligé à informer les gens des paquets que vous avez utilisés lors de la distribution de votre code source. Comme vous pouvez le deviner, cela a abouti à des versions mal adaptées, et à d'autres choses de ce genre.

Si vous le souhaitez, vous pouvez choisir vos composants.

Composer résout tout cela, grâce aux packages stockés localement et à la possibilité de créer des fichiers de dépendance par projet. Cela signifie que vous pouvez facilement distribuer votre projet avec ce fichier de dépendances et que d'autres peuvent utiliser leur propre copie de Composer pour télécharger automatiquement toutes les dépendances spécifiées, tout en les maintenant à jour..

De plus, Composer est une application légère - écrite en PHP même - dotée d'une fonctionnalité d'autoloader. Cela fonctionne en dehors de la norme PSR-0 (mentionnée ci-dessus), qui chargera automatiquement vos dépendances selon vos besoins, afin que votre application reste aussi propre que possible..

Toutes ces caractéristiques constituent une nette amélioration, cependant, sans adoption par la communauté, cela ne signifie rien. Je suis heureux de vous informer que cela a été très bien accepté. Les grands projets, tels que Symfony et Laravel, ont déjà chargé leurs composants dans la bibliothèque Composer, Packagist. La fragmentation de la structure en composants signifie que vous pouvez facilement créer votre propre structure personnalisée en fonction de vos préférences. En d'autres termes, plus de frameworks gonflés. Si vous le souhaitez, vous pouvez choisir vos composants.

Besoin d'un exemple? Vous pouvez prendre le composant base de données de Laravel et le coupler avec le composant modèle du framework Symfony. En fait, le framework Laravel lui-même exploite de nombreux composants Symfony bien testés. Pourquoi reconstruire la roue, alors que vous pouvez concentrer vos efforts sur d'autres domaines?


Laravel

Même si vous avez des problèmes avec certaines incohérences de PHP, Laravel en résume presque tout..

Maintenant, ce ne serait pas un article sur l'avenir de PHP sans discuter de Laravel de manière plus détaillée. On nous demande souvent pourquoi Nettuts + semble pousser Laravel autant qu’il l’a été. C'est la mauvaise question. Demandez plutôt "Pourquoi pas?"

Même si vous avez des problèmes avec certaines des incohérences de PHP, Laravel les résume presque tous, vous donnant l'impression et l'élégance d'une langue, comme Ruby, mais avec la facilité d'utilisation de PHP..

Laravel est livré avec Eloquent, un ORM qui repense complètement tout ce qui a trait aux bases de données. J'utilise principalement MySQL avec PHP; Ce que vous récupérez de la base de données est un objet ressource que vous devez ensuite exécuter via une fonction pour capturer les résultats. Dans Laravel, tout est retourné en PHP standard; on vous donne des objets que vous pouvez modifier et sauvegarder. Vous pouvez faire des choses, telles que la combinaison des résultats de plusieurs tables pour économiser sur les appels de base de données (appelé chargement rapide), et des tâches très simples à faire, comme la validation et les requêtes personnalisées. En prime, si vous n'aimez pas le langage SQL, tout cela peut être fait avec un style POO, en utilisant des méthodes simples et lisibles, telles que trouver et effacer.

Nous n'avons vu que la pointe de l'iceberg avec ce que Eloquent apporte à la table, mais vous pouvez déjà voir les améliorations. Laravel apporte ce type d'innovation à presque tous les domaines de PHP, y compris des choses comme les modèles, le routage, les migrations, les classes RESTful, etc. La meilleure partie, cependant, est que, à chaque nouvelle sortie, le créateur de Laravel, Taylor Otwell, continue de placer la barre plus haut..

Si vous souhaitez en savoir plus sur Laravel, je vous recommande le cours Tuts + Premium, Laravel Essentials, dispensé par notre propre Jeffrey Way. Je ne dis pas cela en tant que membre du personnel de Nettuts +, mais en tant que personne qui a regardé la série. Honnêtement, je peux dire que je ne connaissais absolument pas Laravel et Jeffrey a fait un excellent travail en couvrant autant que possible..

En fin de compte, il ne s'agit pas vraiment du cadre, mais du soutien de la communauté. Tant qu'il existe un soutien pour un projet, celui-ci sera mis à jour et restera pertinent. Si vous êtes inquiet pendant combien de temps il restera populaire, alors, simplement en l'utilisant activement, vous garantissez vos chances!


PHP 5.4 / 5.5

La prochaine chose que je voudrais aborder concerne les mises à jour de PHP publiées en 2012. Avec la version 5.4, de nombreuses nouvelles fonctionnalités sont apparues. Pour un aperçu complet des mises à jour, vous pouvez consulter ces deux articles ici sur Nettuts +: article 5.4, article 5.5.

Mais, pour un résumé rapide de mes favoris:

Traits

  • Les traits ajoutent la possibilité de créer des "partiels" de classe, ce qui vous permet de créer des objets cohérents sans tout réécrire..

Générateurs

  • Les générateurs vous permettent de faire des choses intéressantes avec des listes de données, ainsi que de profiter de toutes les fonctionnalités de l'évaluation paresseuse..

Serveur Web CLI

  • Un autre excellent ajout est le serveur Web intégré, qui vous permet de tester vos applications avec différentes versions de PHP, sans avoir besoin de quelque chose comme Apache..

Déréférencement

  • Le déréférencement n'est pas un ajout majeur, mais il est agréable de pouvoir référencer des éléments enfants sans utiliser de fonctions. Cela inclut des choses telles que l’accès aux caractères individuels d’une constante en utilisant uniquement la notation entre crochets..

La nouvelle API de hachage de mot de passe

  • Avec la nouvelle API, vous avez la possibilité de chiffrer des chaînes, ainsi que de vérifier et de renforcer les mots de passe, le tout sans aucune connaissance de bcrypt ni de tout autre algorithme de hachage..

Celles-ci ne représentent que quelques-unes des nouvelles améliorations. Il s'agit d'une liste complète de sujets en discussion pour la prochaine version, dont la publication est prévue plus tard cette année..


Développement piloté par les tests

Enfin, parlons un peu de tester votre code. Même s’il est vrai que nous sommes un peu en retard, notre communauté a été largement adoptée en 2012 par la méthodologie de développement pilotée par les tests. Je pourrais atteindre un pourcentage de croissance, mais j'estime qu'une meilleure indication de la vérité consiste à regarder simplement sur différents sites et forums de développement. Vous verrez sûrement une pointe! Quand il s’agit de tester en PHP, PHPUnit est le standard bien accepté.

Pourquoi c'est important?

Pensez à votre projet avant de plonger, comme un cow-boy.

Plusieurs fois, vous avez entrepris d'écrire du code, mais vous avez perdu quelque chose dans la traduction. Ce que je veux dire par là, c'est que vous envisagez une chose mais que lorsque vous la mettez en place, vous perdez un peu d'intégrité ou de fonctionnalité. Un autre problème courant survient lors de l'écriture de code pour des projets volumineux: vous vous retrouvez avec plusieurs classes et fichiers ayant chacun leurs propres dépendances. Ce qui vous reste est une "évolution interreliée" de fonctionnalités qu'il peut être difficile de suivre et de maintenir. Comme une partie de Jenga, en mettant à jour un élément, vous risquez d'en briser un autre et de paralyser votre application. Ce ne sont que deux exemples de problèmes, mais il y en a certainement d'autres.

Comment fonctionne l'aide TDD?

Eh bien, vous écrivez des tests clairs avant d'écrire un code de production. Cela signifie que lorsque vous écrivez votre code réel, il est obligé de se conformer à votre plan initial. Non seulement cela, mais, à terme, toutes les dépendances seront suivies dans vos tests. Si vous mettez à jour un peu de code et interrompez par inadvertance l'un des tests, vous serez immédiatement averti.

Oui, la configuration de ces tests nécessite une étape supplémentaire, mais réfléchissez-vous avant de parler. Quelqu'un at-il les avantages de cela? Bien sûr que non. Il en va de même pour les tests: pensez à votre projet avant de plonger, comme un cow-boy.

Apprentissage complémentaire
  • Test dirigé par PHP (Premium)
  • TDD en PHP

Conclusion

C'est un moment passionnant pour un développeur PHP. Bon nombre des problèmes inhérents ont été résolus ou sont en cours de résolution. En ce qui concerne les autres problèmes, ceux-ci seront facilement résolus avec un bon framework et des tests.

Alors qu'est-ce que tu en penses? Vous montez à bord? Pas d'accord avec moi? Si oui, continuons la discussion ci-dessous!