Comment puis-je accéder à la configuration d'une application Zend Framework à partir d'un contrôleur?
J'ai une application Zend Framework basé sur le de démarrage rapide de l'installation.
J'ai obtenu les démos de travail et je suis maintenant sur le point de l'instanciation d'un modèle de classe pour faire du travail de qualité. Dans mon contrôleur je veux passer d'un paramètre de configuration (spécifié dans la demande.ini) pour mon modèle constructeur, quelque chose comme ceci:
class My_UserController extends Zend_Controller_Action
{
public function indexAction()
{
$options = $this->getFrontController()->getParam('bootstrap')->getApplication()->getOptions();
$manager = new My_Model_Manager($options['my']);
$this->view->items = $manager->getItems();
}
}
L'exemple ci-dessus ne permettent d'accéder aux options, mais semble très rond. Est-il un meilleur moyen pour accéder à la configuration?
Vous devez vous connecter pour publier un commentaire.
J'ai toujours l'ajouter à la suite de l'initialisation de la méthode à mon bootstrap pour passer de la configuration dans le registre.
Cela permettra de réduire votre code un peu:
Depuis la version 1.8, vous pouvez utiliser le code ci-dessous dans votre Contrôleur:
Sinon, au lieu d'utiliser Zend_Registry vous pouvez également créer un singleton Application de classe qui contiendra tous les détails d'une application, avec des fonctions membres publiques qui permettent d'accéder à des données pertinentes. Vous trouverez ci-dessous un extrait de code avec le code pertinent (il ne s'exécute pas comme il est, juste pour vous donner une idée de comment il peut être mis en œuvre) :
Votre bootstrap devrait ressembler à ceci :
Lorsque vous souhaitez accéder à la configuration, vous devez utiliser la suivante :
Dans la plupart des ZF applications, l'objet application est déclarée dans la portée globale (voir
public/index.php
dans les applications créées avecZFW_DISTRIBUTION/bin/zf.sh
).Ce n'est pas exactement la ZF chemin, mais vous pouvez accéder à l'objet avec
$GLOBALS['application']
.Il se sent un peu comme de la tricherie, mais si vous êtes après de la performance, ce sera probablement l'option la plus rapide.
J'ai de définir un raccourci en quelque lieu que je require_once() en début de bootstrap:
et dans le bootstrap, j'ai un:
alors je peux obtenir l'instance de l'Application de n'importe où par l'utilisation:
Une manière très simple pour accéder aux options de configuration est en accédant directement à l'globalement défini $demande variable.