Besoin de conseil pour structurer mon code [PHP] - PHP - Programmation
Marsh Posté le 25-04-2005 à 12:38:23
pour un code souple...
des includes + des classes
Marsh Posté le 25-04-2005 à 12:58:44
En terme de perfs, l'include ne pose pas de problème ?
Marsh Posté le 25-04-2005 à 13:00:09
perfs... c'est du langage interprété hein...
Marsh Posté le 25-04-2005 à 13:00:58
oui, c'est vrai
Marsh Posté le 25-04-2005 à 14:04:41
Je vais t'expliquer un peu comment je fais. Avec un pote on est en train de coder un cms, voila comment ce dernier se decompose :
1) Tout le "travail" se fait dans "index.php". Ce fichier la se charge d'inclure les fichiers minimaux pour le cms.
Il charge le "theme" puis la template (definie par le theme) qui correspond a la structure globale du site. Il cree ensuite un classe menu, ainsi qu'une classe session.
Ensuite, il recupere un id passe via get, puis va cherche dans la base la page correspondante a cet id. Esuite il inclus cette page.
2) La page incluse peut faire ce qu'elle veut, elle peut ajouter des elements au menu en accedant a l'instance cree par index. Elle peut acceder aux var de sessions via l'instance cree par l'index.
L'unique chose que doit comporter ce fichier, est une fonction "returnContent" qui doit retourner une String qui contient tout l'xhtml du "module". Ce fichier peut egalement acceder a la BDD via une classe instancie par l'index.
3) Une fois que ce module a renvoye la string, le fichier index va metre cette string a l'endroit specifie par la template. Le fichier va egalement recuperer la css associe au theme pour le metre dans la template. Sans oublier le menu, qui n'est "construit" qu'a la fin du processus (comme ca les pages peuvent ajouter des entrees aux menus).
4) Une fois que la template de base a ete "completee" par les differents elements, elle est envoyee au visiteur. Et ce n'est que dans ce dernier point que la moindre information est envoyee au visiteur. Donc il n'y a pas de probleme a envoyer des headers dans les modules
Voila donc en gros comment ca se passe dans notre cms. Il faut ajouter qu'il y a 2-3 classes "helpers" (genre classe pour creer des formulaires).
Il faut dire que le cms n'est pas OO. Ce que je veux dire, c'est que les "modules" sont de simple fichiers (ce ne sont pas des classes qui doivent heriter d'un certain objet). Et on n'utilise les classe que quand cela est utile. Genre pour le formulaire. Dans ce cas la c'est utile, car c'est un objet qui ne peut pas etre creer en un appel a une fonction.
Pour les sessions, ces dernieres possedent des proprietes (genre la personne est-elle loguee, id, heure de conn).
Un des avantages a avoir un fichier qui inclus les modules, au lieu d'avoir les modules qui incluent les fichiers necessaires, et que tu controles le "point d'entree" de ton site. En gros, il faut toujours passer par index.php + un id. Si qqn essaye d'acceder directement a un fichier php cela ne fonctionne pas (aucun affichage).
J'ai prefere opter pour cette methode, car je trouve qu'elle permet un plus grand controle.
En effet, dans l'autre methode qui consiste a creer des pages "independantes" qui se chargent elles d'inclure les fichiers necessaires, je trouve qu'il n'y a pas bcp de controle de la part des fichier inclus.
Marsh Posté le 25-04-2005 à 14:28:54
Merci de ton intervention, c'est très instructif
J'aime le concept de la classe menu (j'avais pensé à qq chose comme ça, sans pour autant aller jusqu'à une classe mais au final, pourquoi pas).
Idem pour le système des css.
Par contre, je pense que je ne vais pas retenir l'idée du fichier index unique (même si je dois reconnaitre qu'en terme de sécurité c'est sans doute un plus).
Mais vraiment, merci pour tes conseils, ça commence à se préciser dans mon esprit
Marsh Posté le 25-04-2005 à 12:11:55
Salut à tous,
j'aimerai avoir quelques conseils sur la manière de coder en php.
Je m'explique : je code actuellement en utilisant un système de template (pbplib). Cela me permet d'avoir un code vraiment lisible et clair, complètement séparé du code html.
En gros, la structure de mes pages est toujours sensiblement la même :
Le problème que je rencontre, c'est que cette manière de coder n'est pas très souple si je désire appliquer des modifications à l'ensemble du site. En effet, une certaine partie du code est hardcodé dans chaque page (par exemple pour afficher la fenêtre de login) et par conséquent, si je désire modifier ce code, il faut que je modifie toutes les pages (le cauchemard).
Je cherche donc à savoir quelle est la meilleure solution pour avoir plus de souplesse.
Je pense que j'ai deux solutions :
1. faire appel à des fichiers include que je peux insérer dans mon code :
par exemple, je colle un include ("insert.login.php" ) et si je désire faire un changement, je n'ai qu'à modifier ce fichier.
2. faire appel à des fonctions
Le seul a-priori que j'ai sur les fonctions, c'est le passage de variable. Je voudrais que cela soit transparent (d'où mon penchant vers l'include). Normalement, le nombre de variables doit être assez limité mais difficle de prévoir tous les cas possible. En plus, étant donné que je travaille systématiquement avec un objet template, cela signifie qu'il faudrait le passer à chaque fois.
Donc, ne sachant que choisir, je me tourne vers vous.
Quelle est la meilleure methode à suivre pour avoir un code souple ? Est-ce que l'abus d'include est dangereux pour la santé ? bref vos avis sont les bienvenus.
---------------
« Lorsque le bûcheron pénétra dans la forêt avec sa hache, les arbres se dirent : ne nous inquiétons pas, le manche est des nôtres. » | Gérez votre collection de BD en ligne !