Bir öznitelik XML tabanlı bölümünü seçmek için PHP-Nasıl?

3 Cevap php

Tümü,

Ben aşağıdaki biçimde bir yapılandırma xml dosyası vardır:

<?xml version="1.0"?>
<configdata>
    <development>
        <siteTitle>You are doing Development</siteTitle>
    </development>
    <test extends="development">
        <siteTitle>You are doing Testing</siteTitle>
    </test>
    <production extends="development">
        <siteTitle>You are in Production</siteTitle>
    </production>
</configdata>

, Şu anda ben, index.php dosyasında aşağıdaki kodu kullanıyorum ortam ayarlarını uygulamak için bu config dosyasını okumak için:

$appEnvironment = "production";
$config = new Zend_Config_Xml('/config/settings.xml', $appEnvironment );

Kullanıcı index.php dosyası değiştirmek için olduğu gibi, birden çok ortamda bu kod dağıtmak için. Bunu yapmak yerine, bu xml dosyasında bir nitelik korumak mümkün "= true aktif söylüyorlar". Hangi dayanarak Zend_Config_Xml hangi xml dosyası ayarları bölümünde okumak bilecek?

3 Cevap

Zend Framework kullanarak ediyorsanız, ben son derece size sadece Zend Uygulamanın varsayılan index.php tanımlanan oluyor APPLICATION_ENV sabit kullanmanızı öneririz. Eğer değilseniz, muhtemelen ne olursa olsun bu yapabilirdi.

// Define application environment
defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));

Bu sitenizin .htaccess dosyasında ayarlanmış çevresel değişkene karşılık gelir:

//.htaccess
SetEnv APPLICATION_ENV development

Daha sonra şöyle config dosyası yükleyebilir:

$config = new Zend_Config_Xml('/config/settings.xml', APPLICATION_ENV );

Sonra ortamları geçmek için, yapılması gereken tüm. Htaccess dosyasındaki değerleri arasında geçiş olduğunu. Benim sunucu, benim dağıtım komut dosyası otomatik olarak ben dağıtmadan ediyorum hangi ortam dayalı değerini geçmek için kurdunuz:

$ sed -i 's/development/production/' /path/to/site/root/.htaccess

Sen yerine, geliştirme ve üretim için benzersiz bir önyükleme dosyası için benzersiz bir önyükleme dosyası olabilir.

  • index.php.production
  • index.php.development

Bu iki dosya kaynak denetimi altında olabilir. Bir dağıtım komut dosyası index.php için uygun ön yükleme kopyalamak istiyorum ve uzağa gitmek. Index.php dosyası, ve, kaynağı denetimi tarafından göz ardı edilmelidir olabilir - aksi takdirde sadece ayak basıyor.

Tabii ki, özel önyükleme dosyaları uygun ortam dize içerecektir.

Bu işlemek için yollar bir çift muhtemelen kolay olacaktır, vardır setting the application environment constant in your vhost file.

Eğer vhost dosyası (örneğin paylaşılan barındırma) erişiminiz yoksa, tüm ortamlarda mevcut bulunuyor sunucusundaki bir konuma ayrı bir yapılandırma dosyası yerleştirebilirsiniz.

Sen in / home / username (sizin ortamlarda tüm mevcut olan bir dizin almak) server.xml yer olabilir.

server.xml gibi görünebilir

<?xml version="1.0"?>
<configdata>
    <properties>
        <environment>production</environment>
    </properties>
</configdata>

Herhangi diğer bir yapılandırma dosyası olarak yükle server.xml

$server = new Zend_Config_Xml('/home/username/server.xml', 'properties');

Son olarak, sizin uygulamanızda bir şey düzenlemek zorunda kalmadan birden çok ortamda config dosyası yükleyebilirsiniz.

$config = new Zend_Config_Xml('/config/settings.xml', $server->environment );

Burada tek yakaladım sizin server.xml dosyaları app dağıtmadan önce bir yerde sağlamak gerekir.