Symfony 1.4: Programmatically set environment for CLI

У меня есть проект, построенный на Symfony 1.4, и он имеет несколько сред - у каждого разработчика есть своя собственная копия, установленная на его локальном компьютере, и, следовательно, его собственная среда.

Я могу динамически устанавливать среду в index.php, но как я могу сделать это для задач CLI?

Конечно, я мог бы использовать --env=myenvironment для всех задач, но я бы предпочел, чтобы он мог использовать ту же логику, что и в index.php

3 ответа

Решение

Я вижу, что у этого вопроса было много точек зрения, поэтому просто для справки я публикую решение, которое мне пришло в голову.

В конце концов я придумал решение для доступа как через Интернет, так и через интерфейс командной строки, поэтому каждая установка может определить, какую среду использовать, не затрагивая что-либо в Subversion:

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

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

Вы можете сделать что-то похожее на это в своей задаче, возможно:

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),
  }
}

Выше должно работать; по умолчанию используется среда prod, если файл environment.cfg не существует. Это также предполагает, что у вас есть только среда в файле (например, "prod", "dev", "slappythefish" и т. Д.).

Другие вопросы по тегам