Php 从symfony任务获取应用程序/模块上下文

Php 从symfony任务获取应用程序/模块上下文,php,symfony1,Php,Symfony1,我已经编写了一个报告套件,我有一个构建CSV文件的特定报告。通过浏览器按需提供此文件不是问题,但我需要能够每晚构建此CSV文件,并通过电子邮件发送链接以下载它 本质上,我需要能够用通过cron运行的symfony任务替换特定操作。那么,如何从symfony任务中获得应用程序/模块上下文呢?其次,我如何从symfony任务调用SwiftMailer库 我使用的是symfonyv1.4.4和phpv.5.2.13。假设我们在taskName::configure()方法中定义了--applicati

我已经编写了一个报告套件,我有一个构建CSV文件的特定报告。通过浏览器按需提供此文件不是问题,但我需要能够每晚构建此CSV文件,并通过电子邮件发送链接以下载它

本质上,我需要能够用通过cron运行的symfony任务替换特定操作。那么,如何从symfony任务中获得应用程序/模块上下文呢?其次,我如何从symfony任务调用SwiftMailer库


我使用的是symfonyv1.4.4和phpv.5.2.13。

假设我们在
taskName::configure()
方法中定义了
--application
--env
CLI任务选项

然后在
taskName::execute()
方法中接收应用程序上下文如下所示:

$context = sfContext::createInstance(ProjectConfiguration::getApplicationConfiguration($options['application'], $options['env']))
在任务的configure()函数中,您需要定义任务中涉及的应用程序:

$this->addOptions(array(
  new sfCommandOption('application', null, sfCommandOption::PARAMETER_REQUIRED, 'The application name','frontend'),
  new sfCommandOption('env', null, sfCommandOption::PARAMETER_REQUIRED, 'The environment', 'dev'),
  new sfCommandOption('connection', null, sfCommandOption::PARAMETER_REQUIRED, 'The connection name', 'doctrine'),
));
然后必须在execute()函数中创建上下文:

sfContext::createInstance($this->configuration);
最后,您可以非常轻松地呼叫Swift:

$this->getMailer()->composeAndSend($sender,$dest, $subject, $mailBody);

我在尝试时遇到了一个“PHP致命错误:无法在…/config\u core\u compile.yml.PHP中重新声明类sfLogger”。很棒的东西,尽管我看到symfony抱怨发送头等等;这显然不是CLI所需要的。Fabien在构建框架时似乎没有100%的预见性。