2010-03-30 64 views
3

我有一個建立在Symfony 1.4上的項目,它有多個環境 - 每個開發人員都有自己的副本安裝在本地計算機上,因此擁有自己的環境。Symfony 1.4:以編程方式爲CLI設置環境

我能夠在index.php中動態設置環境,但我如何才能爲CLI任務執行此操作?

我當然可以使用--env = myenvironment上的所有任務,但我寧願它是能夠使用相同的邏輯,我在的index.php

+0

你是如何確定的環境,爲開發者在index.php?主機名? GET參數?你能告訴我們一些代碼嗎? – richsage 2010-03-30 10:28:43

+0

它在主配置目錄中查找environment.cfg文件的存在。該文件的內容將環境指定爲字符串。優點是這個文件沒有被提交給SVN,因此每個開發者都可以指定他們自己的配置,而不會影響svn中的配置。 – SlappyTheFish 2010-03-30 11:25:10

回答

0

你可以做一些類似的中你的任務也許:

class MyTask extends sfBaseTask 
{ 
    protected function configure() 
    { 
    // Env config file 
    $file = sfConfig::get("sf_config_dir") . DIRECTORY_SEPARATOR . "environment.cfg"; 
    $env = (file_exists($file) ? file_get_contents($file) : "prod"); 

    $this->addOptions(array(
     new sfCommandOption('env', null, sfCommandOption::PARAMETER_REQUIRED, 'The environment', $env), 
    } 
} 

上面應該工作;如果environment.cfg文件不存在,它默認爲'prod'環境。這也假定你只有文件中的環境(例如'prod','dev','slappythefish'等)。

+0

謝謝,這應該工作 - 但有一個全球性的方式來做到這一點,以便當我輸入symfony propel:insert-sql-diff時,它會自動計算出使用哪個環境? – SlappyTheFish 2010-04-04 20:27:15

2

sfContext::getInstance()->getConfiguration()->getEnvironment()

相關問題