2011-01-06 14 views
1

Ich würde lieber native PHP für Zend-Konfiguration verwenden. Wie würde ich dieses Zend application.ini-Segment in PHP konvertieren?Zend application.ini

[development : production] 

Produktion Abschnitt angeblich erbt von Entwicklung Abschnitt. P.S wir sprechen hier über ZEND Framework.

Update: Sieht aus wie ich mit meiner Frage nicht klar war.

Alles, was ich wissen wollte, war, wie Zend_Application Vererbung/Verschachtelung in PHP-Optionen Datei im Vergleich zu Ini oder XML behandelt.

INI Konfig Beispiel (alles in der Produktion Abschnitt wird durch Test- und Entwicklungsabteilung übernommen werden):

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

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

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

XML-Konfigurations Beispiel (alles in der Produktion Abschnitt wird durch die Inszenierung Abschnitt vererbt werden, Anmerkung Schlüsselwort extends):

<?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> 

PHP-Konfigurationsprüfung ple Keine Vererbung/Verschachtelung? Gibt es eine Möglichkeit, Vererbung/Verschachtelung ohne manuelle Array-Zusammenführung durchzuführen?

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

) 

UPDATE

Im Nachhinein - wollte nur hinzufügen, dass es bestimmte Vorteile PHP Arrays anstelle von INI-Dateien für die Konfiguration zu verwenden: some info

· sie zwischengespeichert werden können durch eine Opcode-Cache

· sie unterstützen Konstanten

· sie erlauben Bäume leicht lesbar Config

· sie boolean unterstützen zu erstellen und ganzzahlige Werte

+0

Warum würden Sie es vorziehen, es zu benutzen? Das Zend Framework verfügt über eine exzellente Konfigurationsimplementierung sowohl für ini als auch für XML-Dateien. –

+1

gut IMHO 1) Ich denke nicht, dass PHP so viel komplexer ist als Raw.ini 2) es ist einfacher, Booleans zum Beispiel zu behandeln - in Ini ist alles String. 3) es ist der schnellste Weg, Variablen zu bekommen. – Stann

+0

Warum der Downvote? Downvoter - Sorge, negative Stimme plz zu erklären? – Stann

Antwort

1

Iam nicht sicher, was du meinst, aber Sie können mit der Config wie folgt dies in Ihrer PHP-Datei simulieren:

$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

nützlich aus, die wahrscheinlich "array_merge_recursive" sein sollte, um das Überschreiben von Schlüsseln auch in Unterfeldern zu erlauben. – Gordon

+1

Zum Beispiel verwendet [DASPRiD] (http://twitter.com/dasprid) 'array_merge_recursive()' in [seiner Bloganwendung] (http://site.svn.dasprids.de/trunk/application/config/config .php). –

+0

Danke. Ich war mir nur nicht sicher, ob Zend_Application das Zusammenführen von Arrayschlüsseln basierend auf der Umgebung behandelt. Aber nach dem Durchsehen des Codes - es tut es nicht. Danke für diese Antwort :) – Stann

1

Es gibt einen Patch Skalare in Zend_Config zu unterstützen.

Siehe

Der Patch nicht in den Stamm für eine Reihe von Gründen nicht angenommen wurde, so gibt es keine Garantie, es wird keine Nebenwirkungen sein. Der Patch ist auch ziemlich alt, daher könnte eine Anpassung nötig sein, damit dies mit den neuesten Versionen von Zend_Config funktioniert.

Um eine Idee zu bekommen, wie man das Problem angeht, könnte es aber hilfreich sein.

Verwandte Themen