6

Hey les gars, juste une petite question ici .. (j'espère!)Quelle est la taille de l'annuaire que mon framework doit avoir?

J'ai essayé un tas de structures de répertoires différentes pour mon framework PHP MVC. En faisant cela, j'ai pensé à quelques raisons de séparer les différentes parties de l'application les unes des autres.

Par exemple, disons que ceci est ma structure actuelle:

- index.php 
- private/ 
    - application/ 
     - ... (MVC stuff. Irrelevant I think...) 
    - config/ 
     - config.php 
    - framework/ 
     - bootstrap.php 
     - includes/ 
     - library/ 
      - ... (Framework classes) 
    - libraries/ 
     - Zend/ 
     - PEAR/ 
- public/ 
    - css/ 
    - images/ 

La façon dont je l'ai, je peux mettre à jour le cadre simplement en réécrivant le répertoire /privé/cadre/, qui ne sera pas affecter la configuration de l'infrastructure de l'utilisateur dans /private/config/ ou dans les bibliothèques tierces au /private/libraries/.

Le fichier index.php est utilisé presque exclusivement pour charger le fichier /private/framework/bootstrap.php, qui signifie la mise à jour du répertoire /privé/cadre/ met également à jour la principale bootstrapping fichier (m'évitant de devoir mettre à jour le fichier /index.php, qui restera tel quel, car il n'y a pas grand-chose dedans).

De plus, l'application est séparée de tout ce qui concerne le framework, de sorte que l'utilisateur peut changer/modifier/mettre à jour ses applications quand cela est nécessaire sans avoir à se soucier des autres répertoires.

Suis-je sur la bonne voie ici en ce qui concerne la séparation des répertoires les uns des autres pour les rendre plus faciles à mettre à jour?

Je l'ai vu dans certains cadres qu'ils ont à la fois leur /privé/bibliothèques/ et /privé/application/ répertoires dans leur répertoire cadre ... mais cela me semble que ce serait difficile de mettre à jour vers une version plus récente du framework si nécessaire. Ou est-ce que j'y pense de la mauvaise façon?

Vous pouvez voir ma précédente dir structure here si vous êtes intéressé. Mon nouvel article est un peu différent (espérons-le mieux ...), de même que ma question, alors je pensais que cela justifiait l'affichage d'une nouvelle question.

Ce n'est pas une question aussi petite que je l'aurais espéré, mais bon! ;)

Merci à l'avance =)

Répondre

2

Je suggère la séparation du code-cadre du code d'application. Le framework doit être sous un répertoire de premier niveau et l'application sous un répertoire différent.

En fait ... Je vous suggère de regarder la structure de répertoire utilisée par CakePHP.

+0

En fait, Cake est l'un des frameworks que j'ai étudiés récemment. Voulez-vous dire que ma structure de dir ci-dessus ne montre pas la même quantité de séparation que Cake fait? Mis à part mes répertoires principaux qui se trouvent dans le répertoire 'private /', les deux structures me paraissent assez similaires. De plus, leur structure a un répertoire 'Cake/config /', ce qui signifierait que si vous aviez déjà mis à jour le répertoire 'Cake /', 'Cake/config /' serait écrasé .. non? Mais je suppose que cela n'affecterait pas beaucoup Cake, puisque dans ce fichier une seule variable semble être définie, et par le framework lui-même, pas l'utilisateur. – manbeardpig

+0

Oui, c'est ce que je veux dire.Cake a deux ensembles de fichiers de configuration, cependant. Il y a app/config et cake/config. Le premier est la configuration de l'application - base de données, cache, sels, trucs comme ça. Ce dernier contient un identificateur de version, une configuration pour la structure de répertoires et quelques éléments de manipulation Unicode. Il y a un monde de différence entre la configuration de l'application et la configuration de l'infrastructure. Je pense que 'framework' et 'application' doivent être des répertoires de niveau supérieur avec 'public' quelque part sous 'application'. Cela renforce la séparation entre le code de l'infrastructure et le code de l'application. – Kalium

+0

J'avais le sentiment que c'était le cas, puisque la variable définie dans le fichier cake/config était pour la version Cake. D'accord, donc si j'ai fait ce que vous venez de proposer, et 'public /' est placé sous 'application /', est-ce que j'utiliserais mon framework pour présenter tous les fichiers css/js/img, ou htaccess pour router les appels css/js/img vers le répertoire/application/public /? – manbeardpig