Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
je débute avec ZF et il y a certaines choses que je ne comprends pas.
Quel est la différence entre la classe bootstrap et le fichier application.ini?
Dans ce tuto : Débuter avec Zend Framework, le doctype du template est défini dans le fichier application.ini :
resources.view.doctype = "XHTML1_STRICT"
et dans la documentation officiel de ZF, il est défini dans la classe Bootstrap :
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected function _initDoctype()
{
$this->bootstrap('view');
$view = $this->getResource('view');
$view->doctype('XHTML1_STRICT');
}
}
J'ai vu pareil pour la configuration de la base de données, ça change selon les tutos...
Est-ce une différence entre ZF 1.10 et ZF 1.11?
Y a t-il une raison particulière de l'écrire soit dans application.ini soit dans la classe Bootstrap?
Qu'est-ce que Zend_Application, une classe? plusieurs fichiers?
Comment ce fait-il que les vues sont appelées alors qu'il n'y a aucun code dans les "Actions"?
Merci par avance.
Hors ligne
Bonjour,
Différence entre application.ini et Boostrap.php
En gros application.ini et Bootstrap.php servent à faire la même chose : ces 2 fichiers initialisent l'application.
application.ini est un fichier de configuration plus simple, mais il ne permet pas de faire toutes les configurations possibles.
Bootstrap.php est un peu plus complexe, mais permet de faire des configurations plus précises.
C'est différent suivant les tutos
Oui, on peut initialiser les choses de plusieurs façons différentes. Entre la 1.10 et la 1.11 il n'y a pas beaucoup de différences. Ces 2 méthodes vont fonctionner sur les 2 versions.
Y a t-il une raison particulière de l'écrire soit dans application.ini soit dans la classe Bootstrap?
non, pas vraiment, cf la 1ère réponse
Qu'est-ce que Zend_Application, une classe? plusieurs fichiers?
C'est une classe (qui va en appeler de nombreuses autres, mais c'est une cuisine interne au framework, à la limite on s'en fiche).
Cette classe va en gros :
- lire le application.ini et le Bootstrap.php et va initialiser l'application.
- lancer le "Front Controller"
Le "Front Controller" est la classe qui va regarder l'URL appelée et qui va lancer l'action qui va bien (c'est ce qu'on appelle le routage). Ensuite le front controller va regarder si une vue existe associée à cette action et va l'afficher.
Comment ce fait-il que les vues sont appelées alors qu'il n'y a aucun code dans les "Actions"?
C'est le front controller qui se charge d'aller voir si une vue correspond à l'action demandée et qui va l'afficher. Donc dans un cas de base, on n'a pas besoin de dire dans l'action qu'on veut afficher une vue, c'est fait automatiquement.
A+, Philippe
PS : j'ai simplifié un peu le processus pour que ça reste à peu près compréhensible.
Hors ligne
Rappelons toutefois que l'utilisation des fichiers de config (.INI ou .XML) est conseillée pour faciliter une éventuelle migration ZF1 vers ZF2
Hors ligne
Super merci, c'est simplifié mais c'est ce que je cherchais.
Donc plutôt configurer dans application.ini, du coup bootstrap.php restera vide?
Je ne suis pas encore allé très loin de ZF mais après avoir configuré la base de données et le layout, va t-il y avoir beaucoup d'autres paramètres dans application.ini?
Merci
Dernière modification par Farid63 (22-04-2011 09:58:12)
Hors ligne
Hello,
Tu peux effectivement mettre beaucoup de choses dans les fichiers de config (j'en ai un sur une application de 500 lignes). Il faut cependant faire attention au parse_ini_file qui est très couteux sur de gros fichiers. Donc le mieux est de mettre en cache la config après la première analyse et avoir un invalideur sur la date de modif du fichier.
@+
Hors ligne
Ok, merci pour ces explications.
Je continue mon apprentissage et j'ai quelques questions au sujet de la vue.
comme je l'ai dit dans mon premier post, il n'y a pas de code dans le controleur qui appel un fichier de vue. Dans la documentation de Zend, je vois :
$view = new Zend_View();
$view->a = "Ha";
$view->b = "Bé";
$view->c = "Cé";
echo $view->render('uneVue.php');
Je sais pas si j'ai bien compris mais voilà mes questions.
Pourquoi faire un new Zend_View() alors qu'on peut utiliser $this->view ?
Pourquoi faire un $view->render() ?
Pourquoi il dise dans la doc que le script de vue devrait se trouver dans le même chemin que les contrôleurs?
voir ici : Documentation
Ce n'est pas dans views/scripts...?
Je pense que j'ai du manquer quelques choses, mais j'ai du mal à m'y retrouver donc j'appel à l'aide.
Merci.
Hors ligne