Avec l'adoption généralisée de PHP, il est presque trop facile de trouver un script ou un extrait de code à faire. exactement De quoi as-tu besoin. Malheureusement, il n'y a pas de filtre sur ce qui est une "bonne pratique" et ce qui est bien ... pas si bon quand on écrit un script PHP. Nous avons besoin de sources fiables, qui ont prouvé qu’elles maîtrisaient parfaitement les meilleures pratiques de PHP..
Nous avons besoin de maîtres PHP pour nous montrer les meilleurs principes à suivre pour une programmation PHP de haute qualité..
Il n'y a pas de meilleure ressource que le créateur de PHP pour savoir ce dont PHP est capable. Rasmus Lerdorf a créé PHP en 1995 et depuis lors, le langage s'est répandu comme une traînée de poudre dans la communauté des développeurs, changeant ainsi le visage d'Internet. Cependant, Rasmus n'a pas créé PHP avec cette intention. PHP a été créé pour résoudre des problèmes de développement web.
Et comme pour beaucoup de projets open source qui sont devenus populaires, la motivation n’a jamais été philosophique ni même narcissique. Il s’agissait simplement de la nécessité de disposer d’un outil pour résoudre les problèmes réels liés au Web. En 1994, les options étaient assez limitées en ce qui concerne les outils de développement Web..
Cependant, vous ne pouvez pas utiliser PHP pour tout. Lerdorf est le premier à admettre que PHP n'est qu'un outil de votre boîte à outils et que même PHP a des limites.
Utilisez le bon outil pour le travail. J'ai rencontré des entreprises qui ont complètement acheté PHP, le déployant absolument partout, mais ce langage n'a jamais été conçu pour être un langage général adapté à tous les problèmes. Il est le plus souvent utilisé comme langage de script frontal pour le Web..
Essayer d'utiliser PHP pour tout, n'est pas efficace, et ce n'est certainement pas la meilleure utilisation de votre temps en tant que développeur web. N'ayez pas peur d'utiliser d'autres langages si PHP ne fonctionne pas pour votre projet.
Personne ne doit remettre en cause l'autorité de Matt Mullenweg avec PHP. Il a (avec une communauté enragée) développé le système de blogging le plus populaire de la planète: Wordpress. Après la création de Wordpress, Matt et sa société ont lancé Wordpress.com, un site de blogging gratuit basé sur le logiciel de blogging à base de code Wordpress MU pour plusieurs blogs. Au moment de la rédaction de cet article, Wordpress.com héberge plus de 4 millions de blogs et leurs utilisateurs ont écrit plus de 140 000 publications aujourd'hui. (Vous pouvez voir des statistiques plus intéressantes sur l'utilisation de Wordpress.com ici.)
Si quelqu'un sait comment redimensionner un site Web, c'est Matt Mullenweg. En 2006, Matt a donné un aperçu de la structure de la base de données Wordpress et a expliqué pourquoi Wordpress MU utilisait une table MySQL distincte pour chaque blog, par opposition à une table "monolithique" géante pour tous les blogs..
Nous avons testé cette approche pour MU, mais nous avons constaté qu’il était trop coûteux de dépasser un certain point. Avec des structures monolithiques, vous heurtez un mur basé sur votre matériel. Dans MU, les utilisateurs sont divisés et peuvent être partitionnés facilement. Par exemple, sur WordPress.com, ils sont partitionnés entre 4096 bases de données, ce qui vous permet d’évoluer très efficacement et à moindre coût pour des centaines de milliers, voire des millions d’utilisateurs, avec un trafic extrêmement intense.
Le fait de pouvoir migrer les tables permet au code et, finalement, aux blogs de s'exécuter beaucoup plus rapidement et de s’adapter plus facilement. Outre la mise en cache intensive et l'utilisation intelligente de bases de données, Matt a montré que des sites extrêmement populaires tels que Facebook et Wordpress.com peuvent utiliser PHP et gérer l'incroyable trafic..
Dave Child est l’invention (teehee) à l’origine du site Web Added Bytes (anciennement ilovejackdaniels.com), récemment renommé, qui présentait les excellentes feuilles de triche de Dave pour de nombreux langages de programmation. Dave a travaillé pour de nombreuses sociétés de développement au Royaume-Uni et s'est imposé comme une autorité dans le monde de la programmation..
Dave donne quelques conseils avisés sur la rédaction de code sécurisé en PHP: ne faites pas confiance à vos utilisateurs. Ils pourraient juste te faire du mal.
Ainsi, la règle fondamentale de tout développement Web, et je ne saurais trop le souligner, est la suivante: Jamais, jamais, faites confiance à vos utilisateurs. Supposons que chaque donnée collectée par votre site sur un utilisateur contienne du code malveillant. Toujours. Cela inclut les données que vous pensez avoir vérifiées avec la validation côté client, par exemple à l'aide de JavaScript. Si vous y arrivez, vous serez bien parti. Si la sécurité PHP est importante pour vous, ce point unique est le plus important à apprendre..
Dave continue en donnant des exemples spécifiques de pratiques sécurisées dans les parties 1, 2 et 3 de sa série "Writing Secure PHP". Mais sa conclusion ultime est la suivante:
Enfin, soyez complètement et complètement paranoïaque.
Si vous présumez que votre site ne sera jamais attaqué, ni ne rencontrera de problèmes de quelque sorte que ce soit, alors quand quelque chose ne va pas, vous aurez énormément de problèmes. Si, en revanche, vous supposez que chaque visiteur de votre site cherche à vous obtenir et que vous êtes en guerre en permanence, vous vous aiderez à protéger votre site et à vous préparer en cas de problème..
Ben Balbo a écrit pour Site Point, un site tutoriel très respecté pour les développeurs et les concepteurs. Il fait partie du comité du groupe d'utilisateurs de PHP de Melbourne et du club de développeurs Open Source, il connaît donc bien le langage. Ce n’est pas surprenant avec le parcours de Ben en tant que développeur et formateur PHP qu’il recommande de réfléchir un peu plus et de se préparer davantage à la mise en cache PHP..
Si vous avez un site Web occupé, principalement statique, tel qu'un blog, géré par un système de gestion de contenu, il ne nécessitera que peu de modifications, mais pourra tirer parti des énormes améliorations des performances résultant d'un faible investissement de votre temps. La mise en cache pour un site plus complexe qui génère du contenu utilisateur, tel qu'un portail ou un système de panier d'achat, s'avérera un peu plus complexe et prend du temps, mais les avantages restent évidents.
Il existe de nombreuses techniques différentes pour la mise en cache en PHP, et Ben en aborde quelques-unes des plus importantes dans l'article, telles que:
et plein d'autres. En raison de la nature des langages dynamiques tels que PHP, la mise en cache est essentielle pour stocker les parties de la page qui sont consultées fréquemment et ne changent pas souvent.
Quand Chad Kieffer n'est pas occupé à balancer des interfaces utilisateur et à gérer des bases de données, il donne des conseils d'expert sur son blog 2 cuillères à soupe. En raison de la vaste expertise de Chad, il est souvent en mesure de comprendre la situation dans son ensemble, ce qui n’est peut-être pas le cas des autres programmeurs, notamment en ce qui concerne l’approche globale adoptée par Chad pour développer un site Web. Il se spécialise dans tous les aspects du processus de développement, de sorte que toutes les informations qu'il peut fournir en mettant sur pied un projet entier seront utiles..
Chad estime que l'utilisation d'un IDE comme Eclipse PDT (package de développement PHP d'Eclipse) avec un mélange de modèles et d'extraits de code peut réellement accélérer le délai d'exécution d'un projet..
Des horaires chargés, des listes de tâches à effectuer et des délais trop longs empêchent les développeurs de se familiariser avec certaines des fonctionnalités avancées fournies par leurs outils. C'est une honte, car certaines fonctionnalités, telles que les modèles Eclipse, peuvent réellement réduire le temps de codage et les erreurs..
Le bon sens dit que chaque fois que vous pouvez automatiser une tâche, plus le projet sera terminé rapidement. Il en va de même avec la théorie de Dan. En prenant le temps de créer des modèles que vous utiliserez encore et encore, vous gagnerez beaucoup de temps en automatisant les parties répétitives du codage..
En utilisant un environnement de développement intégré comme Eclipse et le package PDT, vous constaterez que votre temps de développement augmentera progressivement. L'IDE fermera automatiquement les crochets, ajoutera les points-virgules manquants et vous permettra même de déboguer dans l'éditeur sans avoir à télécharger sur le serveur..
(Chad propose un didacticiel astucieux pour se familiariser avec Eclipse PDT et les avantages d'un IDE en général, si cela vous intéresse.)
Si Joey Sochacki n’est peut-être pas aussi gros que Matt Mullenweg dans la communauté PHP, il est un développeur Web chevronné et partage les astuces qu’il a reprises en chemin sur son blog, Devolio..
Joey a découvert que, même s'il y a une tonne de filtrage à effectuer lors de l'écriture de code PHP, peu de programmeurs utilisent les fonctions de filtrage de PHP..
Filtrage des données. Nous devons tous le faire. La plupart d'entre nous, sinon tous, le méprisent. Cependant, les fonctions filter_ * de PHP ne nous sont pas familières, ce qui nous permet d'effectuer toutes sortes de filtrage et de validation. En utilisant les fonctions filter_ * de PHP, nous pouvons valider et assainir les types de données, les URL, les adresses de messagerie, les adresses IP, supprimer les caractères incorrects, etc., le tout avec une relative facilité..
Filtrer peut être délicat, mais ce guide peut aider énormément. Avec l'aide de Joey, vous apprendrez à installer les filtres et à filtrer presque n'importe quoi, profiter du pouvoir de filtrage de PHP.
Il y a toujours eu un débat sur l'opportunité d'utiliser un framework PHP tel que Zend, CakePHP, Code Igniter ou tout autre framework. Il y a des avantages et des inconvénients à en utiliser un, et de nombreux développeurs ont leur propre opinion sur l'opportunité de s'engager dans cette voie..
Josh Sharp est un développeur Web qui crée des sites Web pour ses clients. C'est pourquoi vous devriez lui faire confiance quand il dit que c'est une bonne idée d'utiliser un framework PHP pour gagner du temps et éliminer les erreurs lors de la programmation. Pourquoi? Josh pense que c'est parce que PHP est trop facile à apprendre.
Mais la facilité d'utilisation de PHP est aussi son inconvénient. Comme il existe moins de restrictions sur la structure du code que vous écrivez, il est beaucoup plus facile d'écrire un code incorrect. Mais il existe une solution: utiliser un framework.
Les frameworks PHP aident à standardiser votre programmation et permettent de gagner beaucoup de temps dans le processus de développement. Vous pouvez en savoir plus sur les avantages d'utiliser un framework PHP sur le blog de Josh.
Contrairement à la conviction de Josh selon laquelle il faut utiliser un framework PHP, Rasmus Lerdorf, le parrain de PHP, estime que les frameworks ne sont pas si géniaux. Pourquoi? Parce qu'ils fonctionnent beaucoup plus lentement que le simple PHP.
Lors de la présentation de Rasmus à Drupalcon 2008, Rasmus a comparé les temps de réponse d’une page PHP à un simple exemple "Hello World", et l’a comparé à quelques frameworks PHP (diapositives 24 à 32). PHP droite.
Vous pouvez écouter ou regarder toute la présentation où Rasmus montre les pertes de performances avec les frameworks PHP. En bref, Rasmus montre que la performance prend un coup dur quand vous utilisez un framework PHP par opposition à du PHP pur.
[Note: Si vous devez utiliser un framework PHP, Rasmus préfère Code Igniter, car il ressemble "au moins à un framework"]
Jack Herrington n'est pas étranger à PHP et au monde du développement. En plus d'écrire plus de 30 articles pour le prestigieux développeur IBM developerWorks, Jack a également publié des livres de programmation tels que PHP Hacks. Jack est un vrai expert.
Herrington recommande d'utiliser le traitement par lots et cron pour s'attaquer aux tâches pouvant être traitées en arrière-plan. Les utilisateurs Web ne veulent pas attendre longtemps pour que les tâches soient terminées sur le Web. Il y a des travaux qui prennent plus de temps et qui sont beaucoup plus appropriés pour être effectués en arrière-plan.
Dans certains cas, il est certainement un peu plus facile de lancer un fil auxiliaire pour gérer de petits travaux. Mais il est facile de voir qu'avec l'utilisation des outils classiques - cron, MySQL, PHP standard orienté objet et Pear :: DB - la création de travaux par lots dans des applications PHP est facile à faire, facile à déployer et facile à maintenir..
Jack croit en la simplicité et au lieu d'utiliser le threading sur les serveurs, il utilise la simple combinaison de cron, PHP et MySQL pour traiter les tâches en arrière-plan..
J'ai fait les deux et je pense que cron bénéficie du principe "Keep It Simple, Stupid" (KISS). Cela simplifie le traitement en arrière-plan. Au lieu d'avoir une application multithread de traitement de tâches qui s'exécute à jamais et, par conséquent, ne peut jamais perdre de la mémoire, vous avez un simple script de traitement par lots qui démarre cron. Le script détermine s'il y a quelque chose à faire, fait puis quitte. Pas besoin de s'inquiéter des fuites de mémoire. Pas besoin de s'inquiéter d'un fil qui cale ou se fait prendre dans une boucle infinie.
David Cummings dirige sa propre société de logiciels spécialisée dans les systèmes de gestion de contenu et a remporté plusieurs prix. Si quelqu'un sait comment développer efficacement une application PHP, c'est Dave.
Dans un article de SitePoint, David a écrit sur les deux astuces PHP qu’il aurait souhaité apprendre au début. Un des conseils: Activer le rapport d'erreur immédiatement. Cela vous fera gagner beaucoup de temps à long terme.
La chose la plus importante que je dis aux personnes qui utilisent PHP est de placer le rapport d'erreur au maximum. Pourquoi voudrais-je faire cela? Généralement, le rapport d'erreur est défini à un niveau qui va cacher beaucoup de petites choses comme:
- déclarer une variable à l'avance,
- référencer une variable qui n'est pas disponible dans ce segment de code, ou
- en utilisant une définition qui n'est pas définie.
Ces facteurs peuvent ne pas sembler être un gros problème - jusqu'à ce que vous développiez des programmes structurés ou orientés objet avec des fonctions et des classes. Trop souvent, écrire du code sans générer de rapports d'erreurs trop élevés vous coûterait des heures car vous exploriez de longues fonctions qui ne fonctionnaient pas parce qu'une variable était mal orthographiée ou inaccessible.
Le signalement des erreurs peut faciliter la recherche de la raison d'une erreur. Un petit bug dans le code peut être rapidement identifié si le rapport d'erreur de PHP est activé. Gagnez du temps et arrachez les cheveux en laissant PHP trouver vos bugs pour vous.
Lire le post précédent dans cette série: 10 principes des CSS Masters.
Glen Stansberry est un développeur et blogueur Web qui a eu beaucoup de difficultés à admettre avec CSS. Vous pouvez lire plus de conseils sur le développement Web sur son blog Web Jackalope.