Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

arborescence pour une architecture MVC


Sujet :

Langage PHP

  1. #1
    Membre expert
    arborescence pour une architecture MVC
    Bonjour,

    étant parti pour l'élaboration de mon site de l'article de blog de rawsrc sur le tennis (https://www.developpez.net/forums/blogs/32058-rawsrc/b8721/poo-gestion-partie-tennis-php-objet/), je suis arrivé à cette arborescence :
    Action
    Classes
    Model 
    Vendor
    View
    Au début, c'était seulement
    Action
    Classes
    View
    Le répertoire Vendor vient du fait que j'ai utilisé la classe PhpEcho de rawsrc et le répertoire Model de mon souhait d'adopter une architecture MVC. De ce fait, ne serait-il pas logique de renommer le répertoire Action en Controller (à mon sens, il a le rôle d'un controller), de mettre tous les fichiers du répertoire Classes dans l'un des 3 répertoires MVC ( Model, View ou Controller ) et enfin tous les fichiers utilitaires (CSS, images, etc) dans Vendor ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

  2. #2
    Membre actif
    Bonjour Laurent,

    Je dirais... comme vous voulez concernant les noms.
    La sémantique qui vous paraît la plus logique sera forcément la meilleure, le but étant que vous ayez à réfléchir le moins possible pour retrouver vos fichiers. Le développement est assez prenant pour le cerveau pour ne pas avoir à s'amuser à chercher sa propre logique pour rechercher un fichier particulier.


    Je vous déconseille de mettre les CSS/JS dans le répertoire Vendor. En effet ce dossier est là pour stocker toutes les bibliothèques PHP.
    Habituellement, j'ajoute un dossier Web ou www qui contient le index.php (comme le fait Symfony, par exemple). Ainsi la racine de mon virtualhost est dans le dossier Web et il est impossible pour un navigateur de lancer une requête sur les autres fichiers que le dossier Web. Les CSS/JS vont donc là-dedans (les bibliothèques externes (jQuery, bootstrap) dans un dossier Web/Vendor, mes propres fichiers directement dans Web éventuellement organisé en sous-dossiers).
    Même si vous n'utilisez pas de dossier Web, je vous conseille de créer un dossier Assets qui contiendra les CSS/JS/Images du dossier pour bien séparer le code (PHP) des assets (CSS/JS/Images).

  3. #3
    Membre expert
    Merci Trehinos de votre réponse. Je vais donc adopter ce que je proposais, à l'exception, comme vous le dites, de loger les CSS/JS/images dans le répertoire Vendor. Le nom de Assets, déjà vu mais oublié, donc OK.
    Pour les bibliothèques externes (comme Jquery ou Bootstrap), quand je les inclus, j'ai l'habitude d'utiliser un Content Delivery Network (CDN), ce qui évite d'avoir à les stocker.
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell