Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 02-01-2008 00:39:09

DJC
Nouveau membre
Date d'inscription: 01-01-2008
Messages: 9

Archi MVC : Où placer le fichier index.php ?

Bonjour à tous,

Je débute actuellement sur le framework et je suis déjà bien embêté car j'aimerai utiliser de bonnes pratiques et conventions de nommage mais je ne sais déjà même pas où placer le fichier index.php ?!

En suivant les tutoriaux proposés dans la rubrique "Comment Débuter" vous pourrez constater que chaque tutoriel utilise une architecture différente :

Initiation au MVC sur la doc du ZF (FR Zend)

Code:

application/
    controllers/
        IndexController.php
    models/
    views/
        scripts/
        index/
            index.phtml
    html/
        .htaccess
        index.php

Tutoriel avancé MVC au Zend Framework 1.0.0 (FR Kitpages)

Code:

PHP-INF/
    ctrl/
        IndexController.php
    model/
    views/
        scripts/
        index/
            index.phtml
.htaccess
index.php

Tutoriel Rob Allen traduit en français (FR developpez)

Code:

application/
    controllers/
        IndexController.php
    models/
    views/
        scripts/
        index/
            index.phtml
    public/
        images/
        scripts/
        styles/
.htaccess
index.php

Quelle architecture est la bonne ? Où placer le fichier index.php (racine ou sous-dossier) ?
Merci d'avance pour votre aide

Hors ligne

 

#2 02-01-2008 07:54:59

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: Archi MVC : Où placer le fichier index.php ?

Perso j'utilise actuellement celle ci

Code:

application/
    .htaccess
    controllers/
    models/
    views/
        layouts/
        scripts/
public/
    .htaccess
    img/
    js/
    css/
    index.php

Mais jusqu'a assez récemment j'utilisais celle là:

Code:

application/
    .htaccess
    controllers/
    models/
    views/
        scripts/
public/
    .htaccess
    img/
    js/
    css/
.htaccess
index.php

Après je ne sais pas si y'a de solutions ultimes. Avec un coup de htaccess on peux trouver plusieurs solutions propres je pense.

Hors ligne

 

#3 02-01-2008 12:19:51

DJC
Nouveau membre
Date d'inscription: 01-01-2008
Messages: 9

Re: Archi MVC : Où placer le fichier index.php ?

Mr.MoOx a écrit:

Mais jusqu'a assez récemment j'utilisais celle là:
...

Pourquoi avoir changé ?
Et est-ce que ceci a impliqué beaucoup de changements ? (modifications de liens, configuration du serveur, ...)

Hors ligne

 

#4 02-01-2008 12:30:43

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: Archi MVC : Où placer le fichier index.php ?

Pourquoi avoir changé ? -> Comme ça. Non en fait je n'aimais pas avoir un fichier index.php perdu tout seul...
Pas de changement majeur (seulement le premier include a changer (car j'inclus un fichier qui configure mon include_path... etc ).
Et pour le serveur, c'est à toi de faire pointé dessus donc ca change quasiment rien.
En gros, ca change rien ou presque (pour moi)

Hors ligne

 

#5 02-01-2008 20:09:46

Phoenix17
Membre
Lieu: Nancy
Date d'inscription: 09-04-2007
Messages: 73
Site web

Re: Archi MVC : Où placer le fichier index.php ?

Je dirais que toutes ces solutions sont bonnes à prendre.

Personnelement, j'ai tendance à utiliser une architecture modulaire (voir http://framework.zend.com/manual/fr/zen … dular.html).

Après tout dépend de la taille de ton projet.

Dans tous les cas, je ne met jamais la library zend ainsi que les fichiers de l'application dans le repertoires /www/ (ou /htdocs/, /public/, etc...) pour des raisons de sécurité.

Je n'aime pas vraiment les htaccess et préfère largement configurer le mod rewrite à partir du fichier httpd.conf d'apache (en effet, un htaccess est éxecuter à chaque requête, tandis qu'une configuration dans le httpd.conf est effectué une seule fois au redémarrage du serveur), de plus, les htaccess pourrait poser certains problèmes de sécurité.

Cependant si tu est en mutualisé avec un unique accès au dossier www, tu seras obliger d'utiliser un htaccess et de mettre tous tes fichiers à 'découverts'.

Hors ligne

 

#6 07-01-2008 11:33:27

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: Archi MVC : Où placer le fichier index.php ?

Bonjour,

Il n'y a pas vraiment de bonne architecture, ça dépend de la taille de ton projet et de ton hébergement.

L'idée générale et que ton serveur apache doit pointer vers le répertoire où se trouve ton index.php. Si tu ne contrôles pas ta conf apache (un hébergement mutualisé par exemple), il faudra sans doute mettre ton index.php à la racine, sinon il est préférable de le mettre ailleurs.

Par contre si tu décides de changer ton arborescence, les liens de ton site ne changeront pas (tout est intercepté par le ZF et les URL dépendent du routeur). Si tu modifies comme il faut ton include_path, tu n'auras pas à changer ton code. Bref, le choix de l'arborescence n'est pas absolument déterminant pour la suite, choisis l'arbo qui te conviens le mieux.

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#7 07-01-2008 13:02:29

sekaijin
Membre
Date d'inscription: 17-08-2007
Messages: 1137

Re: Archi MVC : Où placer le fichier index.php ?

l'important est d'y avoir réfléchi un peu. une fois cela fait il n'y a plus besoin d'y penser.
la position du fichier index.php n'a aucune importance.
pour moi le dossier public donne accès à tout ce qui est public donc visible hors application. en clair tout ce qui est directement accessible par une url sans passer par php. index.php lui n'est pas directement accessible puisqu'il doit être interprété.
donc je ne le mets pas dans public.

mais c'est un choix comme un autre.

voilà ce que j'utilise :
http://sekaijin.ovh.org/?p=3

A+JYT

Hors ligne

 

#8 02-10-2008 11:17:40

Vincent
Administrateur
Date d'inscription: 19-09-2008
Messages: 510

Re: Archi MVC : Où placer le fichier index.php ?

Mr.MoOx a écrit:

Perso j'utilise actuellement celle ci

Code:

application/
    .htaccess
    controllers/
    models/
    views/
        layouts/
        scripts/
public/
    .htaccess
    img/
    js/
    css/
    index.php

Mais jusqu'a assez récemment j'utilisais celle là:

Code:

application/
    .htaccess
    controllers/
    models/
    views/
        scripts/
public/
    .htaccess
    img/
    js/
    css/
.htaccess
index.php

Après je ne sais pas si y'a de solutions ultimes. Avec un coup de htaccess on peux trouver plusieurs solutions propres je pense.

Mais dans quel dossier se place les différentes librairies ? (désolé pour le UP sauvage)


aka miboo

Hors ligne

 

#9 02-10-2008 13:00:05

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: Archi MVC : Où placer le fichier index.php ?

ou tu veux, ca depend que de toi... si tu n'a qu' projet met le au meme niveau que application

Code:

application/
public/
librairies/
    Zend/
    LaTienne/

Après si tu l'utilise sur plusieurs projets comme moi, tu le met à des niveaux au dessus, puis c'est qu'un historie d'include_path

Hors ligne

 

#10 02-10-2008 15:17:08

gauthier
Membre
Date d'inscription: 30-09-2008
Messages: 116
Site web

Re: Archi MVC : Où placer le fichier index.php ?

Concernant la place du bootstrap (index.php), il y a un élément à garder en tête : son but est de restreindre au maximum la quantité de source exposée dans l'espace web.

Autrement dit, la bonne pratique consiste à faire pointer son DocumentRoot (pour Apache) sur le dossier qui contient le bootstrap, et laisser tout le reste (notamment application/ et lib/, mais aussi config/, la bdd etc.) en dehors de l'espace web.

Conclusion, l'arborescence typique (j'ai bien dit typique, pas la seule acceptable bien sûr wink) d'une application Zend Framework (mais ceci est valable aussi pour tout autre framework/application) est la suivante :

Code:

application/
    controllers/
    config/
    db/                 <=== si SQLite par exemple
    models/
    views/
        layouts/
        scripts/
lib/
    XYZ/               <=== pour stocker toute autre librairie propre 
                            à l'application (ou tierce partie bien sûr)
    Zend/             <=== Pour les sources de ZF, mais elles 
                           peuvent aussi bien être ailleurs 
    
public/                <=== DocumentRoot
    .htaccess
    img/
    js/
    css/
    index.php

Avec bien sûr l'alternative, pour une application utilisant des modules, d'intercaler un dossier modules/default/ dans application/.

En bref, dans le meilleur des mondes, index.php doit être le seul script accessible directement http://toto.com/script.php. Tous les autres doivent se situer en-dehors de cet espace, traditionnellement soit dans application/ soit dans lib/

En espérant que ce soit plus clair ainsi :p

Dernière modification par gauthier (02-10-2008 15:18:16)


Consultant Zend Technologies // Blog perso : Logiciel libre et développement web -- http://freeblogware.org

Hors ligne

 

#11 02-10-2008 16:01:27

Vincent
Administrateur
Date d'inscription: 19-09-2008
Messages: 510

Re: Archi MVC : Où placer le fichier index.php ?

Tout est très clair pour ma part, merci à tous :-)


aka miboo

Hors ligne

 

#12 02-10-2008 19:41:35

lethak
Membre
Lieu: France
Date d'inscription: 05-04-2008
Messages: 168

Re: Archi MVC : Où placer le fichier index.php ?

Concernant la place du bootstrap (index.php), il y a un élément à garder en tête : son but est de restreindre au maximum la quantité de source exposée dans l'espace web.

Autrement dit, la bonne pratique consiste à faire pointer son DocumentRoot (pour Apache) sur le dossier qui contient le bootstrap, et laisser tout le reste (notamment application/ et lib/, mais aussi config/, la bdd etc.) en dehors de l'espace web.

même chose


IT Dev @Twitter

Hors ligne

 

#13 02-10-2008 21:02:10

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

Re: Archi MVC : Où placer le fichier index.php ?

Bonsoir,

J'utilise l'architecture suivante

Code:

application/
    libraries/
    nom_application1/
        config/
            config.ini
            init.php   -----> Bootstrap
        controllers/
            AuthController.php
            IndexController.php
            ErrorController.php
            GnagnagnaController.php
        models/
        lib/
        views/
            helpers/
            layouts/
                layout.phtml
                trucbidule.phtml
            scripts/
                auth/
                    index.phtml
                error/
                index/
                    index.phtml
                header.phtml
                footer.phtml
                menu.phtml
    nom_application2/
        idem donc
public/
    nom_site1/
        images/
        css/
        js/
            ajax/
            tools/
        index.php    ----> pointe vers init.php de la bonne appli (rien d'autre qu'un include)
    
    nom_site2/
        idem

Donc je ne met vraiment aucune source dans la partie "public", l'index pointe vers le fichier application/nom_appli/config/init.php qui est en fait le Bootstrap.

A+

Benjamin.


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

#14 02-10-2008 21:41:11

gauthier
Membre
Date d'inscription: 30-09-2008
Messages: 116
Site web

Re: Archi MVC : Où placer le fichier index.php ?

c'est une solution qui se pratique aussi en effet. Son intérêt est toutefois limité si l'on place l'intégralité du code de démarrage dans le bootstrap...

Une autre solution consiste sinon, mais elle plus complexe, à recourir à un plugin de contrôleur dérivé de Zend_Controller_Plugin_Abstract, et qui s'utilise ensuite ainsi :

Code:

$frontController->registerPlugin(new InitPlugin());

Comme le contenu du plugin serait un peu long à détailler ici (quoique je pourrais peut-être en faire un tuto si ça intéresse quelqu'un...), je peux vous renvoyer vers le squelette de projet ZF que propose Zend Studio 6.1, qui implémente cette technique.

Elle a entre autres intérêts de faciliter l'exécution de tests unitaires sur les contrôleurs (qui ont besoin d'un environnement initialisé mais sans requête HTTP - pas de dispatch()).

NOTA : je ne fais pas de pub pour Studio, vous pouvez tous le télécharger gratuitement en version d'essai, ce qui est suffisant pour générer un projet de type "Zend Framework" et consulter le code dont je parle ici. Pour le reste, je vous laisse seuls juges :p


Consultant Zend Technologies // Blog perso : Logiciel libre et développement web -- http://freeblogware.org

Hors ligne

 

#15 03-10-2008 18:11:12

ManuB
Membre
Lieu: Auxerre
Date d'inscription: 17-10-2007
Messages: 49

Re: Archi MVC : Où placer le fichier index.php ?

C'est le fameux Initializer ?

Hors ligne

 

#16 03-10-2008 23:44:19

gauthier
Membre
Date d'inscription: 30-09-2008
Messages: 116
Site web

Re: Archi MVC : Où placer le fichier index.php ?

lui-même smile


Consultant Zend Technologies // Blog perso : Logiciel libre et développement web -- http://freeblogware.org

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages