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.
Message édité par cerel le 25-04-2005 à 14:06:30