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" и т. Д.).