万一你还没有见过这个:http://www.symfony-project.org/cookbook/1_1/en/tasks
这就提供了自定义任务创造一个很好的概述,包括选项和参数。我其实刚刚坐下来几天前写几个任务,所以我会试着去看看到目前为止我所选的内容。下面是我创建了一个任务,以颠覆更新项目的快速重建一个例子:
$this->addOptions(array(
new sfCommandOption('username', null, sfCommandOption::PARAMETER_REQUIRED, 'Subversion username'),
...
));
的第一个参数是选项的名称,将被越来越发挥到命令执行:
。/symfony的我的:任务 - 用户名=“foo”的
第二个参数被定义为通过类定义的快捷方式(%symfony_lib_dir%/命令/ sfCommandOption.class.php),但我还没有发挥但是,你的猜测和我的一样好。
第三个参数指定是否有更多的参数,然后只是它的调用。您的选项如下:
PARAMETER_NONE
ex: --username
PARAMETER_OPTIONAL
ex: --username[=...]
PARAMETER_REQUIRED
ex: --username=...
第四个参数是帮助输出参数的说明。
有一个可选的第五个参数,只要你不是PARAMETER_NONE(它会在执行时抛出异常)。
一旦你设置了选项,你可以通过传递给你任务执行函数的第二个参数来访问它们,它们将作为关联数组来完成。继续我的例子中,我将有以下几点:
protected function execute($arguments = array(), $options = array()) {
$task = 'svn up';
if($options['username']) {
$task .= ' --username="' . $options['username'] . '"';
}
....
}
什么一直是最有帮助的,我是代码示例和自Symfony的是与现有任务大集合捆绑,我强烈建议您查看它们(%symfony_lib_dir%/任务/ *)获取灵感和指导。我真的得到了project/sfProjectDeploy.class.php的帮助,它使用了各种各样的sfTask功能,并且对于通过我的自定义任务找到自己的方式至关重要。
希望有所帮助。
当我创建表单对象的实例时,我可以将选项传递给构造函数,然后通过$ this-> getOption在表单类中进行访问( 'nameOfPassedVariable')。任务没有类似的东西? – Mailo 2009-09-10 20:50:31
不作为功能,不。相反,你可以在你的执行函数第二个参数中以相同的方式使用关联数组($ options ['option_name'])。实际上不需要函数,因为可用的选项和参数集只限于配置方法中设置的内容。 – nortron 2009-09-12 22:54:46