萬一你還沒有見過這個: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