2010-10-13 4 views
1

Existe-t-il un moyen de transmettre des variables à Bootstrap.php? Voilà comment je bootstrap dans le index.php:Comment passer des variables à Bootstrap.php

// let's go! 
$application = new Zend_Application(APPLICATION_ENVIRONMENT, 
            APPLICATION_PATH.'/configs/application.ini'); 

try { 
    $application->bootstrap(); 
    $application->run(); 
} catch (Exception $exception) { 
    echo $exception->getMessage(); 
    exit(1); 
} 

Dans une méthode de ma classe Bootstrap.php je dois avoir accès à certaines variables de index.php et en utilisant $ GLOBALS est tout simplement horrible:

protected function _initFilePathConverter() 
{ 
    require_once (PATH_TO_LIB_UTIL.'/FilePathConverter.php'); 
    $this->aFilePathConverter = new FilePathConverter(); 
    $this->aFilePathConverter->AddPathPairs($GLOBALS['REAL_PATHS'], $GLOBALS['HTTP_PATHS']); 
} 
+0

Que faites-vous dans votre fichier index.php que vous ne pouvez pas faire dans le bootstrap lui-même si cela ne vous dérange pas de demander? – Mike

+0

@Mike Voir mon deuxième extrait de code. C'est tout. Le problème est que ce court morceau de code est nécessaire dans toutes les applications web de mon entreprise et que toutes ne sont pas construites sur Zend Framework. Par conséquent, nous voulons éviter la redondance et avoir ce code juste au même endroit sur le serveur et l'inclure dans toutes les applications. De plus les variables passées à AddPathPairs sont des tableaux donc nous ne pouvons pas les définir comme des constantes. –

Répondre

3

Vous pouvez utiliser Zend_Registry.

E.g. dans le index.php on pourrait dire:

Zend_Registry::set('Real_Paths', array('my', 'paths')); 

Assurez-vous que lorsque vous avez créé l'objet Zend_Application, de sorte que le chargeur automatique Zend a été initialisé. Et puis dans le fichier de démarrage:

$real_paths = Zend_Registry::get('Real_Paths'); 
+0

Si l'OP indique qu'utiliser $ _GLOBALS est une douleur, alors utilisez Zend_Registry :: set ('index', $ value); pour définir et $ value = Zend_Registry :: get ('index'); pour obtenir serait plus exagéré. – ITroubs

+0

Merde J'ai oublié ça et j'utilise Zend_Registry tout le temps. Merci. –

+0

Je n'ai pas dit que c'était exagéré. Je l'ai juste appelé terrible, ce qui signifie que je veux éviter d'utiliser des globals. –

-1

Essayez ceci:

index.php

<? 

$testvar = 'testing'; 

?> 

bootstrap.php

protected function _initFilePathConverter() 
{ 
    global $testvar; 
    echo $testvar; 
} 
+0

Utilisation globale est une mauvaise pratique -1 – Poru

+0

je sais que moi-même! – ITroubs

Questions connexes