2010-10-07 8 views
0

J'utilise Zend Framework v 1.10Zend Framework: Comment appeler une fonction personnalisée créée dans bootstrap?

J'ai créé une fonction personnalisée dans le fichier de démarrage:

<?php 

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap 
{ 

    public function init(){ } 

    public function helloworld(){ echo 'hello';} 
} 
?> 

Comment puis-je appeler la fonction HelloWorld() à partir d'une action dans le contrôleur Index?

Toute aide sera appréciée.

Merci

Répondre

0

Tout le monde peut appeler une fonction dans la classe bootstrap sans créer d'objet de la classe. Bootstrap appelle automatiquement les fonctions personnalisées ayant le mot-clé _init en préfixe. Tels que:

public function _initIndia() { 
    echo 'Proud to be an Indian'; 
} 
5
$this->getFrontController()->getParam('bootstrap')->helloworld(); 

devraient fonctionner. Mais je ne vois aucune raison pour laquelle vous voudriez faire cela - le bootstrap sert à initialiser les ressources d'application, son travail est fait bien avant que les contrôleurs ne s'en mêlent. Peut-être que ce que vous faites dans la méthode devrait être une ressource ou dans un plugin de contrôleur?

+0

Alors quelle est la différence entre le fichier d'amorçage et le fichier index.php qui se trouve sous le dossier public que j'ai trouvé sous l'exemple de code Quickstart sur le site officiel de zend? – Phantom007

+0

Les deux font partie du processus d'initialisation. L'index.php appelle la classe d'amorçage. –

+0

Je suis d'accord avec Tim. Index.php implémente le pattern Front Controller (http://en.wikipedia.org/wiki/Front_Controller_pattern) en ce qu'il est le point central qui gère toutes les requêtes et s'occupe des processus dépendants pour que l'application fonctionne efficacement - comme amorçage. Le bootstrap est cependant plus spécifique dans la mesure où il prend en charge l'initialisation des ressources pour l'application, telles que le routage, la mise en cache, la navigation et la pagination; entre autres choses. –

-1

Toutes les fonctions publiques que vous créez dans le bootstrap commençant par _init seront automatiquement appelées par le code d'amorçage. Par exemple:

public function _initHelloWorld() { echo 'hello'; } 
+0

La question posée sur une fonction appelée helloworld, pas _initHelloWorld donc l'OP semble savoir que c'est le cas. – jblue

+0

Et en passant, il n'a pas besoin d'être public pour être appelé automatiquement. Les méthodes protégées sont appelées automatiquement – dade