:http://www.symfony-project.org/cookbook/1_1/en/tasksオプションと引数を含むカスタムタスクの作成の優れた概要を提供
。私は実際に数日前にカップルの仕事を書くために座ったので、私が今までに拾ったものを試してみよう。
$this->addOptions(array(
new sfCommandOption('username', null, sfCommandOption::PARAMETER_REQUIRED, 'Subversion username'),
...
));
最初のパラメータがオプションの名前であるとなることで、コマンドの実行に再生されます:
ここで私はそれが迅速な再構築のためのSubversionからプロジェクトを更新し作成したタスクの例を示します。 /私のsymfonyの:タスク - 名 =「foo」という
二番目のパラメータは、クラス定義(%symfony_lib_dirの%/コマンド/ sfCommandOption.class.php)でショートカットとして定義されていますが、私がプレイしていませんそれはまだ、あなたの推測は私のものと同じくらい良いです。
3番目のパラメータは、引数が多ければ呼び出しているかどうかを指定します。オプションは次のとおりです。
PARAMETER_NONE
ex: --username
PARAMETER_OPTIONAL
ex: --username[=...]
PARAMETER_REQUIRED
ex: --username=...
第4引数は、ヘルプ出力の引数の説明です。
PARAMETER_NONEでない限り、デフォルト値として指定できるオプションの5番目のパラメータがあります(実行していると例外が発生します)。
オプションが設定されると、タスクの実行関数に渡される2番目のパラメータからそれらのオプションにアクセスできます。これらのパラメータには、連想配列として渡されます。
いつも私のために最も役立っている何
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
機能ではありません。その代わりに、あなたの実行関数の第2引数で連想配列を同じ方法で使うことができます($ options ['option_name'])。利用可能なオプションとパラメータのセットは、configureメソッドで設定されたものに限定されているので、実際には関数は必要ありません。 – nortron