Biz bir ortam değişkeni (ENVPHP) tanımlamak ve bizim XML yapılandırma dosyalarında kullanmak, bu yüzden doğru DB parametreleri sürece doğru ENVPHP ortam değişkeni tanımlamak olarak yüklenir. XML kullanarak, ortak parametrelerinizi belirli ortamlar için genişletebilir (veya geçersiz kılabilirsiniz).
ie. aşağıdaki gibi yapılandırma görünür:
<?xml version="1.0" encoding="UTF-8"?>
<application>
<common>
<name>MyApp_name</name>
<code>MyApp_code</code>
<version>MyApp_version</version>
<authentication>
... authentication specific parameters (ie. LDAP connection parameters)
</authentication>
...
</common>
<dev extends="common">
<database>
... DB connection parameters for development
</database>
...
</dev>
<tst extends="common">
<database>
... DB connection parameters for test
</database>
...
</tst>
<prd extends="common">
<database>
... DB connection parameters for production
</database>
...
</prd>
</application>
Ve yapılandırmayı yüklemek için, ben (aslında bir uygulama tekil sınıfında, iyi) benim bootstrap aşağıdaki adres:
public static function getEnv()
{
if (self::$env === null) {
self::$env = getenv('ENVPHP');
} else {
return self::$env;
}
}
protected function initConfig()
{
$configFile = $this->appDir . '/config/application.xml';
if (! is_readable($configFile)) {
throw new Application_Exception('Config file "' . $configFile . '" is not readable');
}
if (false === self::getEnv()) {
throw new Application_Exception('The environment variable "ENVPHP" is not defined');
}
$config = new Zend_Config_Xml($configFile, self::getEnv(), true);
$config->setReadOnly();
Zend_Registry::set('config', $config);
$this->config = $config;
}
PHP kodunda İstersem sadece belirli ortamlar için bazı şeyler yapmak için sonra hangi ortamda olduğumu kontrol etmek ve buna göre istediğim kodu yürütmek için Application :: getEnv() öğesini kullanırım.
BTW ENVPHP ortam değişkeni, apache yapılandırma dosyasında örn. VirtualHost konteynerünüzün içinde SetEnv ENVPHP "dev"
. CLI PHP komut dosyaları için size ... bir OS ortam değişkeni olarak .htaccess
benim uygulamada Sonra
SetEnvIf Host dev.mydomain.ca APPLICATION_ENV=development
SetEnvIf Host mydomain.ca APPLICATION_ENV=production
SetEnvIf Host mydomain.localhost APPLICATION_ENV=production
benim için çalışmak
SetEnvIf Ana bilgisayar def.example.com APPLICATION_ENV = aşamalandırma benim için – Yeroon
daha iyi bir şekilde görünüyor: SetEnvIf HOST^abc.example.com $ APPLICATION_ENV = üretim ... – Kamil