2011-01-06 4 views
1

Je préférerais utiliser PHP natif pour la configuration de Zend. Comment convertir ce segment application.ini de Zend en php?Zend application.ini

[development : production] 

La section de production hérite supposément de la section de développement. P.S nous parlons ici du framework ZEND.

Mise à jour: On dirait que je n'étais pas clair avec ma question. Tout ce que je voulais savoir, c'était comment Zend_Application gérait l'héritage/l'imbrication dans le fichier d'options php comparé à ini ou xml.

INI exemple config (tout dans la section de production sera héritée par des essais et de la section de développement):

[production] 
autoloaderNamespaces[] = "My_" 
bootstrap.path = APPLICATION_PATH "/Bootstrap.php" 
bootstrap.class = "Bootstrap" 

[testing : production] 
bootstrap.class = "productionBootstrap" 

[development : production] 
bootstrap.class = "developmentBootstrap" 

XML config exemple (tout dans la section de production sera héritée par la section mise en scène, note étend le mot-clé):

<?xml version="1.0"?> 
<configdata> 
    <production> 
     <webhost>www.example.com</webhost> 
     <database> 
      <adapter>pdo_mysql</adapter> 
      <params> 
       <host>db.example.com</host> 
       <username>dbuser</username> 
       <password>secret</password> 
       <dbname>dbname</dbname> 
      </params> 
     </database> 
    </production> 
    <staging extends="production"> 
     <database> 
      <params> 
       <host>dev.example.com</host> 
       <username>devuser</username> 
       <password>devsecret</password> 
      </params> 
     </database> 
    </staging> 
</configdata> 

Examen de configuration PHP ple Pas d'héritage/d'imbrication? Existe-t-il un moyen d'effectuer un travail d'héritage/d'imbrication sans effectuer de fusion manuelle de matrices?

return array(
    'production' => array(
     $test1 => 'aaaaaaa' 
    ), 
    'staging' => array(
     $test2 => 'bbbbbb' 
    ), 
    'testing' => array(
     $test3 => 'bbbbbb' 
    ) 

) 

MISE À JOUR

Rétrospectivement - voulais juste ajouter qu'il ya certains avantages à utiliser les tableaux PHP au lieu de fichiers ini pour la configuration: some info

· ils peuvent être mises en cache par un opcode cache

· ils supportent des constantes

· ils permettent de créer facilement des arbres de configuration lisibles

· ils soutiennent booléens et des valeurs entières

+0

Pourquoi préféreriez-vous l'utiliser? Zend Framework est livré avec une excellente implémentation de la configuration pour les fichiers ini et xml. –

+1

Eh bien à mon humble avis 1) je ne pense pas que php est tellement plus complexe que raw.ini 2) il est plus facile de gérer les booléens par exemple - ini tout est chaîne. 3) c'est le moyen le plus rapide d'obtenir des variables. – Stann

+0

Pourquoi le downvote? Downvoter - soin d'expliquer vote négatif plz? – Stann

Répondre

1

Iam ne sais pas ce que vous voulez dire, mais vous pouvez simuler ceci dans votre fichier php avec votre configuration comme ceci:

$configProduction = array(
    'database' => $db1, 
    'url'  => 'www.production.com', 
); 

$configDevelopment = array(
    'url' => 'www.test.com', 
); 

//ENV is set in bootstrap or htaccess or php.ini 
switch (APPLICATION_ENV) { 
    case 'production': 
     $config = $configProduction; 
     break; 
    case 'development': 
     $config = array_merge($configProduction, $configDevelopment); 
     break; 
} 
+3

qui devrait probablement être 'array_merge_recursive' pour permettre l'écrasement des clés dans les sous-tableaux. – Gordon

+1

Par exemple, [DASPRiD] (http://twitter.com/dasprid) utilise 'array_merge_recursive()' dans [son application de blog] (http://site.svn.dasprids.de/trunk/application/config/config .php). –

+0

Merci. Je ne savais pas si Zend_Application gère la fusion de clés de tableau en fonction de l'environnement. Mais après avoir regardé le code - ce n'est pas le cas. Merci pour cette réponse :) – Stann

1

Il y a un patch pour soutenir dans Zend_Config scalaires.

Voir

Le patch n'a pas été acceptée dans le tronc pour un certain nombre de raisons, donc il n'y a aucune garantie qu'il n'y aura pas d'effets secondaires. Le correctif est également plutôt ancien, il pourrait donc nécessiter quelques ajustements pour que cela fonctionne avec les versions récentes de Zend_Config.

Pour avoir une idée sur la façon d'aborder le problème, il pourrait être utile cependant.

Questions connexes