Bonjour,

J'ai cherché sur le web des informations sur comment hiérarchiser et gérer l'arborescence des fichiers d'un site web mais je ne trouve pas mon bonheur.

Pour explication, je débute dans la programmation web (html et php) et je suis (à peu prêt) capable de réaliser un site fonctionnel. Mais faut dire que c'est le bordel dans mes fichiers.
J'ai observé des sites webs bien réalisés comme celui-ci et comme dans de nombreux tutoriels présentés on voit apparaître des dossiers nommé "controllers", "helpers", "models", ...
Jusqu'à l'utilisation des dossiers "images", "css" et "js" j'arrive à m'en sortir et ça me parait logique vu les extensions, mais dès qu'on doit trier les dossiers php c'est plus compliqué.

Donc en voyant tous ces sites j'imagine qu'il doit y avoir une certaine convention et je souhaiterais en savoir plus.

  • Qu'elles sont les dossiers qu'on peut donc trouver.
  • Quels sont leur intérêt, leur contenu, que mettre dedans ?
  • Suivant le type de fichier (si c'est des fonctions par exemple) quel type de donnée doit-on avoir en sortie ? (code html, ou variable à intégrer dans la page concernée via un echo, ...)
  • Comment gérer l'accès à ces fichier quand on se situe pas dans le même niveau hiérarchique ?

Enfin voila, j'aimerais comprendre pour organiser un peu mieux mon site, qu'on puisse travailler à plusieurs dessus par exemple et tout simplement par convention.
Si quelqu'un peu me renseigner, m'indiquer des liens que je n'ai pas trouvé, m'expliquer directement, ...

Merci !

P.S. : Peut être est-ce un idée de tutoriel aussi ... Non ?

5 réponses


Grafikart
Réponse acceptée

Déja séparé les contenus (js/images/css) dans des dossiers c'est une bonne pratique.

Après le plus dur c'est l'organisation du codes sources. Cela dépend de ta façon de travaille, si tu utilise une logique MVC (cf tutoriel :) ) tu va te retrouver avec 3 dossiers Controller/Views et Model.

PaulB319
Réponse acceptée

Le model MVC t'apporte beaucoup : il te permet de disposer d'une structure de départ. Mais je vois que tu n'a pas encore appréhendé le concept. Tout d'abord, concernant l'organisation sans MVC, tu peux créer quelque chose comme :

CORE - ici, tu mes toutes les fonctions de ton site
APP - ici, tu mes toutes tes pages
WEBROOT - ici, tu mes tes dossiers css, js, img ainsi que le layout de ton site

L'avantage principal d'un bon MVC, c'est sa simplicité. cakePHP est facile d'utilisation. Si tu as déjà regardé les tutoriels de Grafikart concernant la création d'un blog, tu t'es surement rendu compte du peu de code qu'il y avait. De plus, l'interaction avec la base de donnée est grandement simplifiée : plus besoin d'écrire des milliers de requêtes. Des fonctions toutes prêtes existent. En voici quelques exemples :

<?php 
// Pour récupérer des données 
$this->Lenomdetonmodel->find('all');
// Pour lire une seule entrée de ta table
$this->Lenomdetonmodel->read($fields, $id);
// Pour sauvegarder ou mettre à jour des données ($this->data = $_POST en mieux)
$this->Lenomdetonmodel->save($this->data);

// Pour supprimer des données
$this->Lenomdetonmodel->delete($id);
?>

Ce sont les fonctions que l'on utilise le plus souvent avec cakePHP. Elles facilitent vraiment la vie ! Mais bien sur, il y en a plein d'autre !

Bref, je te conseil vraiment d'essayer cakePHP, ou alors même de créer ton propre framework.

Paul9

Angelive
Auteur

Ok Ok !
J'viens de regarder l'équivalent de 3h de tutoriaux et je cerne déjà mieux le principe.
Cependant, vu mon niveau, ça me parait encore trop compliqué de faire le lien entre les models, le fonctionnement des controllers et de tous ces dossiers et sous-dossiers qui portent plus ou moins le même nom avec des classes et des héritages à plus en finir ...
Je pense donc repartir dans ma méthode de débutant (bourrin ?) tout en essayant de comprendre progressivement le fonctionnement de la logique MVC.

Histoire de poser la question tout de suite en prévision du futur : J'ai vu l’existence des frameworks web pour le php des trucs comme Zend Framework entre autres ...
Alors est-il utile et judicieux de chercher à utiliser ce genre d'outils pour développer mon site en php sachant que je débute relativement dans le domaine, et donc que mes compétences sont donc restreintes pour le moment ?
Si oui est-ce "simple" à prendre en main, en existe-t-il un meilleur pour la prise en main ? Et puis-je me permettre de sauter l'étape de la MVC faite "maison" ?

Si je pose ces questions, c'est qu'il existe de nombreuses méthodes qui ont plus ou moins fait leurs preuves, qui sont approuvées par certains et rejetées par d'autres. De ce fait il existe de nombreux outils associés qui ont été créés. En plus de cela on doit faire de plus en plus face à des soucis de sécurisation des données tout en se simplifiant la tâche vis à vis du code avec un soucis d'optimisation en plus. Enfin tout ça pour dire qu'il y a énormément de boulot quand on débute.
Personnellement, j'aime les choses bien faites et retoucher 50 fois le site pour un coup adapter/changer le design, un coup améliorer la sécurité, un coup réduire le code et l'optimiser, et enfin un dernier pour l'organiser ça demande énormément de travail et c'est trop lourd pour un débutant comme moi (et c'est obligatoire actuellement si on veux quelque-chose de bien fait). Or il existe actuellement des outils pour réduire/faciliter ce travail pour peu qu'on les connaisse et qu'on sache les utiliser. Et c'est justement ce que je souhaite savoir pour aller directement à l'essentiel sans pour autant sauter les étapes essentielles à l'apprentissage sans lesquelles je ne pourrait <u>utiliser</u> ces outils (et pas comprendre).

Merci d'avoir (tout) lu, je validerais la réponse après une dernière tant espérée. =)

P.S. : Les intitulés des icônes de ton BBCODE pourraient être facilement améliorés (Italic > Italique, Sous-ligné > Souligné, ul > Liste à puces, li > liste à chiffres) pour peu que les images correspondent au code ce qui n'est pas le cas pour le souligné par exemple ^^
C'est juste pour que le site devienne parfait. Encore merci !

Angelive
Auteur

Merci beaucoup de ta réponse, cela m'éclaire énormément.
J'ai continué à suivre quelques tutoriels sur la MVC et c'est encore pas mal compliqué pour moi donc je ne m’aventurerais pas vers cela pour l'instant.
Je vais commencer par organiser mon projet actuel avec la base que tu m'as fixé (core, app, webroot) qui me semble logique et facile en premier lieu. Et en parallèle je me documenterai sur cakePHP pour de futurs projets et pour apprendre progressivement.

Je vous remercie pour vos réponses et en particulier la dernière qui me fixe une certaine ligne de conduite pour les temps prochains.

Merci merci. +

Bonjour,

Toutes ces réponses m'ont été d'une grande aide. Je conseille aussi de lire quelques articles dispo sur Internet, notamment Construire l'arborescence de son site sur la Fabrique du Net qui propose des logiciels pour organiser ses idées et des logiciels de maquettage web.

Merci encore