PHP est la langage le plus largement utilisé pour la programmation sur le Web. Voici trente bonnes pratiques pour les débutants qui souhaitent mieux comprendre les principes fondamentaux..
Note de l'éditeur: La série "Meilleures pratiques" est mon bébé depuis trois articles maintenant. Cependant, en raison de mon intérêt pour la série de vidéos CI, j'ai décidé de transmettre cette nouvelle entrée à Glen. Cela dit, je ne suis pas très doué pour me taire! J'ai pensé qu'il pourrait être amusant d'ajouter sporadiquement quelques réfutations à ses conseils. J'espère que ça ne le dérange pas!
En passant, si vous n'êtes pas sûr de pouvoir implémenter vous-même certaines de ces choses, vous pouvez faire appel à des experts de PHP sur Envato Studio. Ils peuvent corriger les erreurs ou personnaliser votre site pour vous. Ce sont des développeurs expérimentés qui suivent les meilleures pratiques lors de l'exécution du travail..
Experts PHP sur Envato StudioSi vous débutez en PHP, il est temps de vous familiariser avec le génial qu'est le manuel PHP. Le manuel PHP est incroyablement complet et contient des commentaires vraiment utiles après chaque article. Avant de poser des questions ou d'essayer de résoudre un problème par vous-même, gagnez du temps et passez directement au manuel. Les chances sont la réponse à votre question est déjà niché dans un article utile sur le site PHP.net.
Signaler des erreurs en PHP est très utile. Vous trouverez dans votre code des bogues que vous n'aviez peut-être pas repérés auparavant, car tous ne nuisent pas à l'application. Vous pouvez utiliser différents niveaux de reporting dans les rapports, mais E_ALL vous indiquera le plus grand nombre d'erreurs, critiques et d'avertissements..
Une fois que votre application est prête pour la production, vous devez désactiver les rapports d'erreur, sinon vos visiteurs verront des erreurs étranges qu'ils ne comprendront pas..
Les environnements de développement intégrés (IDE) sont des outils utiles pour tout développeur. Bien qu'ils ne conviennent pas à tout le monde, un IDE a définitivement sa place. Les IDE fournissent des outils tels que
Et beaucoup d'autres fonctionnalités. Il y a beaucoup d'excellents IDE qui supportent PHP.
Vous pouvez en apprendre beaucoup sur PHP simplement en expérimentant avec des frameworks PHP. Des frameworks tels que CakePHP ou CodeIgniter vous permettent de créer rapidement des applications PHP, sans être un expert en PHP. En un sens, ils ressemblent presque à des roues de formation PHP qui vous montrent à quoi une application PHP devrait ressembler et vous montrent des concepts de programmation utiles (comme séparer la logique du design, etc.)..
Certains cadres spécialisés sont également disponibles sur le marché Envato, tels que Blaze et Frameworx..
Réfutation: Personnellement, je ne recommanderais pas aux débutants d'utiliser un cadre. Apprenez les fondamentaux en premier. :)
DRY signifie «Ne vous répétez pas» et c'est un concept de programmation précieux, quelle que soit la langue. La programmation DRY, comme son nom l'indique, garantit que vous n'écrivez pas de code redondant. Voici un exemple de Reinhold Weber:
Ce code…
$ mysql = mysql_connect ('localhost', 'reinhold', 'secret_hash'); mysql_select_db ('wordpress') ou die ("ne peut pas sélectionner de base de données");
maintenant avec l'approche DRY:
$ db_host = 'localhost'; $ db_user = 'reinhold'; $ db_password = 'secret_hash'; $ db_database = 'wordpress'; $ mysql = mysql_connect ($ db_host, $ db_user, $ db_password); mysql_select_db ($ db_database);
Vous pouvez en savoir plus sur le principe de programmation DRY ici et ici.
Si vous n'utilisez pas d'indentations ni d'espaces dans votre code, le résultat ressemble à un tableau de Jackson Pollack. Assurez-vous que votre code est lisible et facile à consulter, car vous ferez très certainement des modifications dans le futur. Les IDE et les éditeurs de texte avancés peuvent ajouter une indentation automatiquement.
La hiérarchisation de vos applications n’est rien de plus que de séparer les différentes composantes du code en différentes parties. Cela vous permet de changer facilement votre code dans le futur. L'écrivain de NETTUTS, Jason Lengstorf, a écrit un excellent article sur la manière de hiérarchiser vos applications PHP pour une maintenance plus facile..
Souvent, les programmeurs essaient de prendre des raccourcis lors de la déclaration de PHP. Voici quelques exemples courants:
echo "Hello world"; ?> ="Hello world"; ?> <% echo "Hello world"; %>
Bien que ceux-ci enregistrent quelques caractères, toutes ces méthodes sont amorties et non officielles. S'en tenir à la norme comme il sera garanti d'être pris en charge dans toutes les versions futures.
Nommer cela n'est pas uniquement pour votre bien. Il n'y a rien de pire que d'essayer de trouver votre chemin à travers les conventions de nommage absurdes d'un autre programmeur. Aide-toi et d'autres en utilisant des noms qui ont un sens pour vos classes et fonctions.
En plus d'utiliser des espaces et des renfoncements pour séparer le code, vous souhaiterez également utiliser des commentaires en ligne pour annoter votre code. Vous vous remercierez plus tard lorsque vous aurez besoin de revenir en arrière et de trouver quelque chose dans le code, ou si vous ne pouvez tout simplement pas vous rappeler ce qu'une certaine fonction a fait. Il est également utile pour toute autre personne qui doit examiner votre code..
MySQL est le type de base de données le plus populaire à utiliser avec PHP (bien que ce ne soit pas le seul). Si vous souhaitez configurer un environnement local pour développer et tester vos applications PHP sur votre ordinateur, envisagez d'installer MAMP (Mac) ou WAMP (Windows). L'installation de MySQL sur votre propre ordinateur peut s'avérer fastidieuse et ces deux logiciels sont des installations d'installation de MySQL. Propre et simple.
Il est très important de fixer une limite de temps à vos scripts PHP. Il peut arriver que vos scripts échouent et que vous souhaitiez utiliser la fonction set_time_limit pour éviter les boucles infinies et les délais de connexion à la base de données. Set_time_limit fixe une limite de temps au nombre maximal de secondes d'exécution d'un script (la valeur par défaut est 30). Après cette période, une erreur fatale est renvoyée..
La programmation orientée objet (OOP) utilise des objets pour représenter des parties de l'application. La POO est non seulement un moyen de diviser votre code en sections distinctes et logiques, mais elle réduit également la répétition du code et facilite beaucoup la modification ultérieure. Si vous souhaitez en savoir plus, DevArticles est un excellent article sur la programmation orientée objet avec PHP..
Il est plus efficace d'utiliser unique entre guillemets, l'analyseur n'ayant pas à parcourir le code pour rechercher les caractères échappés et autres éléments autorisés par les guillemets. Toujours essayer d'utiliser des guillemets simples chaque fois que possible.
Réfutation: En fait, ce n'est pas nécessairement vrai. Les tests de référence montrent que, lors du test de chaînes sans variables, l’utilisation de double citation.
Phpinfo est une belle chose. En créant simplement un fichier PHP qui a
et en le déposant quelque part sur le serveur, vous pouvez instantanément tout savoir sur votre environnement de serveur. Cependant, beaucoup de débutants placeront un fichier contenant phpinfo () dans la racine Web du serveur. C'est une pratique vraiment peu sûre, et si les regards indiscrets y ont accès, cela pourrait potentiellement être catastrophique pour votre serveur. Assurez-vous que phpinfo () est dans un endroit sûr et supprimez-le une fois que vous avez terminé..
Si votre application dispose de places pour la saisie utilisateur, vous devez toujours supposer qu’elle va essayer de saisir du code vilain. (Nous n'impliquons pas que vos utilisateurs sont de mauvaises personnes. C'est simplement un bon état d'esprit.) Un excellent moyen de garder votre site sans piratage consiste à toujours initialiser vos variables pour protéger votre site contre les attaques XSS. PHP.net a un exemple de formulaire correctement sécurisé avec des variables initialisées:
De nombreux débutants en PHP introduisent souvent des données sensibles telles que des mots de passe dans la base de données sans appliquer de cryptage. Pensez à utiliser MD5 pour chiffrer les mots de passe avant de les mettre dans la base de données..
echo md5 ('monPassword'); // rend - deb1536f480475f7d593219aa1afd74c
Réfutation: Gardez toutefois à l'esprit que les hachages MD5 ont été compromis depuis longtemps. Ils sont absolument plus sûrs que non, mais, avec l'utilisation d'une énorme "table arc-en-ciel", les pirates peuvent faire référence à votre hachage. Pour ajouter encore plus de sécurité, pensez également à ajouter un sel. Un sel est fondamentalement un ensemble supplémentaire de caractères que vous ajoutez à la chaîne de l'utilisateur.
Si vous rencontrez des difficultés pour planifier et modifier les bases de données de vos applications PHP, vous pouvez utiliser un outil de visualisation de base de données. Les utilisateurs de MySQL peuvent utiliser DBDesigner et MySQL Workbench pour concevoir visuellement vos bases de données..
La mise en tampon de sortie est un moyen simple d'améliorer considérablement les performances et la vitesse de votre script PHP. Sans mise en mémoire tampon de sortie, votre script affichera le code HTML sur la page tel qu’il est traité - par morceaux. L'ajout de la mémoire tampon de sortie permet à PHP de stocker le code HTML en tant que variable et de l'envoyer au navigateur en une seule fois..
Pour activer la mise en mémoire tampon de la sortie, ajoutez simplement ob_start () comme ceci en haut du fichier..
Réfutation: Bien que cela ne soit pas obligatoire, il est généralement considéré comme une bonne pratique de continuer et d'ajouter le "ob_end_flush ();" fonctionner aussi bien au bas du document. P.S. Voulez-vous également compresser le code HTML? Remplacez simplement "ob_start ();" avec "ob_start ('ob_gzhandler')";Reportez-vous à cet article sur les conseils de développement pour plus d'informations..
sans titre
Si vous n'échappez pas aux caractères utilisés dans les chaînes SQL, votre code est vulnérable aux injections SQL. Vous pouvez éviter cela en utilisant mysql_real_escape_string ou en utilisant des instructions préparées..
Voici un exemple de mysql_real_escape_string en action:
$ username = mysql_real_escape_string ($ GET ['nomutilisateur']);
et une déclaration préparée:
$ id = $ _GET ['id']; $ statement = $ connection-> prepare ("SELECT * FROM tbl_members WHERE id =?"); $ statement-> bind_param ("i", $ id); $ statement-> execute ();
En utilisant des instructions préparées, nous n'intégrons jamais les données saisies par l'utilisateur directement dans notre requête. Au lieu de cela, nous utilisons la méthode "bind_param" pour lier les valeurs (et l'échappement) à la requête. Beaucoup plus sûr et notamment plus rapide lors de l'exécution simultanée de plusieurs instructions CRUD.
En savoir plus sur la création d'applications PHP sécurisées sur Nettuts.
Si vous écrivez en PHP orienté objet, vous pouvez utiliser le nifty object relational mapping (ORM). ORM vous permet de convertir des données entre des bases de données relationnelles et des langages de programmation orientés objet. En bref: ORM vous permet de travailler avec des bases de données de la même manière que vous travaillez avec des classes et des objets en PHP..
Il existe de nombreuses bibliothèques ORM pour PHP comme Propel, et ORM est intégré à des frameworks PHP tels que CakePHP..
La mise en cache de pages PHP basées sur une base de données est une excellente idée pour améliorer la charge et les performances de votre script. Ce n'est vraiment pas si difficile de créer et de récupérer des fichiers statiques de contenu avec l'aide de notre bon ami ob_start (). Voici un exemple tiré de Snipe.net:
// TOP de votre script $ cachefile = 'cache /'. Basename ($ _ SERVER ['SCRIPT_URI']); $ cachetime = 120 * 60; // 2 heures // Servir depuis le cache si sa taille est inférieure à $ cachetime si (file_exists ($ cachefile) && (time () - $ cachetime) < filemtime($cachefile))) include($cachefile); echo ""; exit; ob_start (); // démarre le tampon de sortie // votre script PHP normal et votre contenu HTML ici // BOTTOM de votre script $ fp = fopen ($ cachefile, 'w'); // ouvre le fichier cache pour écrire fwrite ($ fp, ob_get_contents ()); // enregistre le contenu du tampon de sortie dans le fichier fclose ($ fp); // ferme le fichier ob_end_flush (); // envoie la sortie au navigateur.
Ce morceau de code utilisera une version en cache d'une page datant de moins de 2 heures..
Si vous souhaitez un système de mise en cache plus robuste, il existe quelques scripts de mise en cache pour PHP qui pourraient être plus complets que l'exemple ci-dessus..
Les données de cookie, comme toutes les données transmises sur le Web, peuvent être nuisibles. Vous pouvez valider les données de cookie avec htmlspecialchars () ou mysql_real_escape_string ().
Outre l'utilisation de systèmes de mise en cache de bases de données tels que Memcached, vous pouvez également essayer un système de modèles pour améliorer les performances de vos applications PHP. Smarty est un système de modèles robuste qui intègre la mise en cache.
Le profilage de votre code avec un outil tel que xdebug peut vous aider à identifier rapidement les goulots d'étranglement et autres problèmes potentiels de votre code PHP. Certains IDE tels que Netbeans ont également des capacités de profilage PHP.
Une fois que vous avez maîtrisé PHP, vous pouvez commencer à apprendre à coder selon un standard. Il existe des différences entre les normes existantes (par exemple Zend et Pear), et en trouver une et s'y tenir aidera à la cohérence de votre codage à long terme..
Vous prenez un coup de performance lorsque vous incluez des fonctions à l'intérieur de boucles. Plus la boucle est large, plus le temps d'exécution sera long. Prenez le temps supplémentaire et la ligne de code et placez la fonction en dehors de la boucle.
Note de l'éditeur: Pensez-y de cette façon. Essayez de supprimer autant d'opérations que possible de la boucle. Avez-vous vraiment besoin de créer cette variable pour chaque itération de la boucle? Avez-vous vraiment besoin de créer la fonction à chaque fois? Bien sûr que non. :)
Certaines personnes aiment rendre leur code plus attrayant en copiant des variables prédéfinies dans des variables de noms plus petits. Ceci est redondant et pourrait potentiellement doubler la mémoire de votre script. Google Code contient de bons exemples d'utilisation variable:
Mal
$ description = strip_tags ($ _ POST ['description']); echo $ description;
Bien
echo strip_tags ($ _ POST ['description']);
Réfutation: En ce qui concerne le commentaire "doubler la mémoire", il s'agit en fait d'une idée fausse commune. PHP implémente la gestion de la mémoire "copie sur écriture". Cela signifie que vous pouvez attribuer une valeur à autant de variables que vous le souhaitez sans avoir à vous soucier des données. étant copié. Bien qu'il soit discutable que l'exemple du "bon" exemple ci-dessus puisse rendre le code plus propre, je doute fortement qu'il soit plus rapide..
Bien que cela semble du bon sens, beaucoup de gens ne mettent pas à jour PHP aussi souvent qu'ils le devraient. Il y a beaucoup d'augmentations de performances entre PHP 4 et PHP 5. Vérifiez votre serveur pour vous assurer que vous êtes à jour.
Plus vous réduirez le nombre de requêtes de base de données, plus votre script PHP sera performant. Il existe des outils tels que Stace (Unix) et Process Explorer (Windows) qui vous permettent de rechercher des processus redondants et de les combiner..
C’est seulement la nature humaine de vouloir cacher le fait que nous n’en savons pas beaucoup sur un sujet donné. Personne n'aime être un n00b! Mais comment allons-nous apprendre sans demander? N'hésitez pas à utiliser les forums, IRC, StackOverflow pour poser des questions plus expérimentées aux développeurs PHP. Le site Web de PHP contient une page sur l'obtention d'aide PHP.
Avez-vous des réfutations de votre part? Je suis sûr que vous faites! Commençons le débat.