Lorsque vous démarrez avec PHP, il peut être difficile de trouver le meilleur moyen d'organiser un projet. Si vous avez déjà été confondu avec l'emplacement de vos images, de vos bibliothèques externes ou de la séparation de votre logique avec votre mise en page, consultez ces conseils. ils vous conduiront dans la bonne direction.
Je dirais que la première chose à faire pour que votre projet soit opérationnel rapidement est de disposer d'une structure de répertoires solide que vous pouvez réutiliser pour plusieurs projets. Si vous utilisez un framework, il fournira généralement une structure à utiliser, mais dans ce scénario, nous travaillons sur un site ou une application simple..
Vous connaissez probablement très bien le public_html
structure. C’est la racine du document dans laquelle tous vos fichiers publics sont consultés (/public_html/page.php
est accessible à exemple.com/page.php
).
le Ressources
Le répertoire doit contenir toutes les bibliothèques tierces, les bibliothèques personnalisées, les configurations et tout autre code faisant office de ressource dans votre projet..
En tant que concepteurs et développeurs, notre objectif principal est de faire le moins de travail possible. Les fichiers de configuration sont l’un des moyens d’atteindre cet objectif. Pour avoir une meilleure idée de ce que le fichier de configuration devrait avoir, consultez cet exemple.
array ("db1" => array ("dbname" => "database1", "username" => "dbUser", "password" => "pa $$", "hôte" => "localhost"), "db2 "=> array (" dbname "=>" database2 "," username "=>" dbUser "," password "=>" pa $$ "," host "=>" localhost "))," urls "=> array ("baseUrl" => "http://example.com"), "path" => array ("resources" => "/ path / to / resources", "images" => array ("content" = > $ _SERVER ["DOCUMENT_ROOT"]. "/ Images / content", "layout" => $ _SERVER ["DOCUMENT_ROOT"]. "/ Images / layout"))); / * Je placerai généralement les éléments suivants dans un fichier d’amorçage ou dans un type de fichier de configuration d’environnement (code exécuté au début de chaque demande de page), mais ils fonctionnent tout aussi bien dans votre fichier de configuration s’il est en php (certaines alternatives). php sont des fichiers xml ou ini). * / / * La création de constantes pour les chemins très utilisés facilite grandement les choses. ex. require_once (LIBRARY_PATH. "Paginator.php") * / défini ("LIBRARY_PATH") ou defini ("LIBRARY_PATH", realpath (nomdirect (__ FILE__). '/ bibliothèque')); défini ("TEMPLATES_PATH") ou bien défini ("TEMPLATES_PATH", realpath (nom_répertoire (__ FILE__). '/ templates')); / * Rapport d'erreur. * / ini_set ("error_reporting", "true"); error_reporting (E_ALL | E_STRCT); ?>
Ceci est un fichier de configuration de base insérable. Un tableau multidimensionnel sert de structure flexible pour accéder à divers éléments de configuration tels que les informations d'identification de base de données..
L'utilisation de constantes pour les chemins couramment utilisés rend les instructions include (exiger
ou comprendre
) une brise, et si le chemin change jamais, il vous suffit de le mettre à jour à un endroit.
En utilisant différents fichiers de configuration pour plusieurs environnements, vous pouvez définir des paramètres pertinents en fonction de l'environnement actuel. Cela signifie que si vous utilisez des informations d'identification de base de données différentes ou des chemins différents pour chaque environnement, en configurant les fichiers de configuration respectifs, vous vous assurez que votre code fonctionnera sans problème lors de la mise à jour de votre site actif. Cela vous permet également de définir différents paramètres de rapport d'erreur en fonction de l'environnement actuel. Ne jamais afficher les erreurs sur votre site en direct! L'affichage d'erreurs sur le site actif peut exposer des données sensibles aux utilisateurs (tels que des mots de passe)..
Les modèles réutilisables sont un autre grand gain de temps. Il existe d'excellentes bibliothèques pour les modèles (comme Smarty) et j'encourage toujours à utiliser une telle bibliothèque plutôt que de réinventer la roue. Ces bibliothèques offrent de nombreuses fonctionnalités (telles que des méthodes d'assistance pour formater la devise et masquer les adresses électroniques). Comme il s’agit d’un site simple, nous ne souhaitons toutefois pas prendre le temps de configurer la bibliothèque et nous utiliserons les modèles de base les plus élémentaires. Nous y parvenons en incluant des sections ou des modules communs dans les pages de notre site. De cette façon, si nous voulons changer quelque chose dans l'en-tête, comme ajouter un lien à la navigation globale, cela se propage à travers le site..
Site simple Site simple
- Accueil
- Des articles
- Portefeuille
- PHP
- HTML
- CSS
Contenu du pied de page…
Supposons que nous plaçons tous nos composants de mise en page (en-tête, pied de page, rightPanel) dans notre répertoire de ressources, sous modèles..
Ce système de gabarit de base vous donne un bon départ, mais vous pouvez aller beaucoup plus loin. Par exemple, vous pouvez créer une classe ou des fonctions qui incluent tous les fichiers de modèle et accepter un fichier de contenu en tant qu'argument à afficher dans la présentation. De cette façon, vous n'avez pas besoin d'inclure les fichiers de modèle dans chaque page de votre site, mais d'abstractionnez cette logique, ce qui signifie encore moins de travail par la suite. Je vais vous montrer un exemple rapide.
0) foreach ($ variables comme $ key => $ valeur) if (strlen ($ key)> 0) $ $ key = $ valeur; require_once (TEMPLATES_PATH. "/header.php"); écho "\NT\ n "; require_once (TEMPLATES_PATH." /footer.php ");?>\ n "; if (file_exists ($ contentFileFullPath)) require_once ($ contentFileFullPath); else / * Si le fichier n’est pas trouvé, l’erreur peut être gérée de nombreuses manières. Dans ce cas, nous inclurons simplement une erreur template. * / require_once (TEMPLATES_PATH. "/error.php"); // fermeture du contenu div echo "\ t\ n "; require_once (TEMPLATES_PATH." /rightPanel.php "); // ferme le conteneur div echo"
Cela suppose que vous avez dans votre répertoire de modèles un fichier appelé home.php qui fait office de modèle de contenu..
$ setInIndexDotPhp); renderLayoutWithContentFile ("home.php", $ variables); ?>
Page d'accueil
Plus grande séparation de la logique et de la vue (php et html). En séparant les problèmes de ce type, le code est plus propre, et le travail du concepteur ou du développeur devient plus facile car ils travaillent principalement avec leur code respectif..
En encapsulant la logique du modèle dans une fonction, vous pouvez modifier le rendu du modèle sans le mettre à jour sur chaque page de votre site..
Sur les systèmes basés sur Unix (os x, linux), il existe une petite fonctionnalité intéressante appelée liens symboliques (liens symboliques). Les liens symboliques sont des références à des répertoires ou des fichiers du système de fichiers. Cela est très utile lorsque vous avez une ressource partagée, telle qu'une bibliothèque utilisée entre plusieurs projets. Voici quelques choses concrètes que vous pouvez faire avec des liens symboliques:
Avoir deux versions de votre répertoire de ressources. Lors de la mise à jour de votre serveur live, vous pouvez télécharger vos derniers fichiers dans un répertoire arbitraire. Il suffit de pointer le lien symbolique vers ce nouveau répertoire pour mettre à jour instantanément votre base de code. En cas de problème, vous pouvez revenir instantanément au répertoire précédent (de travail)..
Les ressources partagées sont facilement gérées avec des liens symboliques. Supposons que vous travailliez sur une bibliothèque personnalisée. Toute mise à jour de la bibliothèque que vous apportez dans un projet sera immédiatement disponible dans un autre..
Les liens symboliques, ou liens symboliques, agissent en tant que références à des chemins complets sur le système de fichiers. Vous pouvez utiliser des liens symboliques dans plusieurs emplacements et le système de fichiers les traite comme s'il s'agissait du fichier ou du répertoire auquel ils font référence. Les liens physiques, d’autre part, sont des pointeurs sur un fichier du disque (pensez aux raccourcis dans Windows); ils vous mènent à l'emplacement réel du fichier.
Il y a quelques points à considérer lors de l’utilisation de liens symboliques. Votre configuration de serveur doit être configurée pour suivre les liens symboliques. Pour Apache, cela se fait dans le fichier httpd.conf. Recherchez le bloc Répertoire et assurez-vous que Options FollowSymLinks est présent. Sinon, ajoutez-le puis redémarrez Apache.
Options FollowSymLinks AllowOverride None
Il existe deux manières de créer des liens symboliques dans OS X:
Via la ligne de commande, accédez (cd, changez de répertoire) au répertoire dans lequel vous voulez que le lien symbolique soit créé, puis utilisez la commande suivante:
$: ln -s / path / to / real / dir targetDir
Donc, si notre bibliothèque personnalisée vit dans ~ / Sites / Bibliothèques / myCustomLibrary
nous cd à l'endroit où nous voulons utiliser cette bibliothèque cd ~ / Sites / mySite / resources / library
et entrez:
$: ln -s ~ / Sites / Bibliothèques / myCustomLibrary myCustomLibrary
Notez que cette méthode devrait fonctionner dans tous les systèmes d'exploitation basés sur Unix..
L'alternative est à travers le viseur. En maintenant alt + cmd en cliquant et en faisant glisser un fichier, un lien symbolique (ou un alias dans os x) pointant vers le fichier est créé..
Pour ce faire dans Windows, vous devez utiliser la commande mklink dans l'invite de commande:
C: \ mklink / D C: \ bibliothèques \ myCustomLibrary C: \ Utilisateurs \ derek \ Sites \ monSite \ ressources \ library \ myCustomLibrary
Ces conseils sont destinés aux débutants ou à ceux qui créent des sites ou des applications simples. Idéalement, pour les applications ou les sites plus importants, envisagez quelque chose de plus avancé, comme l'architecture MVC et la programmation orientée objet. Je vous encourage à les examiner une fois que vous vous êtes mouillé les pieds et à sentir que vous avez dépassé la plupart des étapes ci-dessus. J'ai décidé de ne pas couvrir le contrôle de source car il s'agit d'un sujet assez volumineux, mais ces conseils devraient vous aider à organiser vos fichiers pour faciliter le contrôle de la source si vous le souhaitez (conseil: stockez des éléments tels que des images de mise en page dans votre répertoire de ressources et faites un lien symbolique avec votre fichier. / public_html / img
dir). Cherchez certainement à utiliser le contrôle de source, comme subversion ou git pour tous vos projets.
J'espère que vous trouverez ces conseils utiles lors du démarrage de votre prochain projet PHP. Merci!