2016-06-20 10 views
-1

Ich schreibe ein Framework und habe gerade Namespaces hinzugefügt. Ich hatte keine Probleme, alles zu konvertieren, abgesehen von Konfigurationswerten.Konfigurationswerte unter bestimmten Namespaces definieren?

Ich kann Konstanten leicht definieren, also einzelne Werte sind kein Problem ... aber was ist mit einem Array von Werten?

dieses Array Nehmen wir zum Beispiel, die die Konfiguration Array ist eine Verbindung hinzufügen, um capsule ...

[ 
    'driver' => 'mysql', 
    'host'  => 'localhost', 
    'database' => 'DB_NAME', 
    'username' => 'USERNAME', 
    'password' => 'PASSWORD', 
    'charset' => 'utf8', 
    'collation' => 'utf8_general_ci', 
    'prefix' => '' 
    ] 

Ich habe mit einer Datei, die ...

für Datenbankkonfiguration sieht wie folgt aus

Ich werde starten Eloquenz von meinem Haupt App Klasse starten. Dies verhindert, dass eine globale Variable dies tut. Obwohl es unwahrscheinlich ist, dass $BareBonesCapsule verwendet wird, möchte ich immer noch mein Framework sauber halten und alles in seinem Namespace behalten.

ich eine Reihe von Konstanten in der Konfigurationsdatei erklären könnte ...

<?php 

    namesapce BareBones; 

    define("driver", "mysql"); 
    define("host", "localhost"); 
    define("database", "DB_NAME"); 
    /* etc... */ 

Das ist nicht sehr sauber scheint, und ich gehe davon aus es einen besseren Weg, dies zu tun ist. Wie gehen andere Frameworks mit diesem Problem um und welche alternativen Konfigurationsmöglichkeiten habe ich, während ich eine Trennung vom globalen Namespace behalte?

Antwort

1

können Sie INI-Dateien verwenden und brechen sie in Abschnitte wie so:

; This is a sample configuration file 
; Comments start with ';', as in php.ini 

[first_section] 
one = 1 
five = 5 
animal = BIRD 

[second_section] 
path = "/usr/local/bin" 
URL = "http://www.example.com/~username" 

[third_section] 
phpversion[] = "5.0" 
phpversion[] = "5.1" 
phpversion[] = "5.2" 
phpversion[] = "5.3" 

urls[svn] = "http://svn.php.net" 
urls[git] = "http://git.php.net" 

Von: http://php.net/manual/en/function.parse-ini-file.php

Symfony unterstützt XML, PHP und YML und ermöglicht es Ihnen, Ihre eigenen Config-Decoder zu schreiben.