3

我有一个基于 Symfony 1.4 构建的项目,它有多个环境——每个开发人员都在他们的本地机器上安装了自己的副本,因此有自己的环境。

我可以在 index.php 中动态设置环境,但是如何为 CLI 任务执行此操作?

我当然可以在所有任务上使用 --env=myenvironment,但我希望它能够使用与 index.php 中相同的逻辑

4

3 回答 3

2

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

于 2010-07-26T20:56:00.573 回答
1

我看到这个问题有很多观点,所以我发布我想出的解决方案仅供参考。

我最终想出了一个 Web 和 CLI 访问的解决方案,因此每次安装都可以确定使用哪个环境,而不会影响 Subversion 中的任何内容:

http://www.4pmp.com/2010/10/programmatically-set-environment-for-symfony-project/

于 2010-10-20T08:15:42.440 回答
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”等)。

于 2010-03-30T18:04:02.903 回答