Sadece durumda zaten görmedim bu: http://www.symfony-project.org/cookbook/1_1/en/tasks
Bu seçenekler ve argümanlar da dahil olmak üzere özel görev yaratılış iyi bir genel bakış sağlar. Aslında sadece bu yüzden ben şimdiye kadar aldım ne üzerine çalışacağız ve gidersiniz bir kaç gün önce bir kaç görevleri yazmak için oturdum. Burada hızlı bir yeniden için devirmenin bir projeyi güncelleştiren ben oluşturulan bir görev bir örnek var:
$this->addOptions(array(
new sfCommandOption('username', null, sfCommandOption::PARAMETER_REQUIRED, 'Subversion username'),
...
));
İlk parametre seçenek adıdır ve olma tarafından komut yürütme içine oynayacak:
. - username = "foo" görevi: / my Symfony
İkinci parametre sınıf tanımı (% symfony_lib_dir% / komut / sfCommandOption.class.php) tarafından bir kısayol olarak tanımlanır ama sizin tahmin benimki kadar iyidir, ama onunla oynadı değil.
Sonra sadece onu aradığını argüman daha var eğer üçüncü parametre belirtir. Aşağıdaki gibi seçenekleri şunlardır:
PARAMETER_NONE
ex: --username
PARAMETER_OPTIONAL
ex: --username[=...]
PARAMETER_REQUIRED
ex: --username=...
Dördüncü parametre yardım çıkışı için argüman açıklamasıdır.
Sürece (sen eğer yürütme üzerinde bir özel durum) PARAMETER_NONE değiliz gibi varsayılan bir değer belirtilebilir isteğe bağlı beşinci parametre var.
Lütfen seçenekleri kurmak kez size görevin yürütmek işleve geçirilen ikinci parametre eriþebileceðim, onlar bir ilişkisel dizi olarak aracılığıyla geleceğiz. Benim örnek devam ben şu olurdu:
protected function execute($arguments = array(), $options = array()) {
$task = 'svn up';
if($options['username']) {
$task .= ' --username="' . $options['username'] . '"';
}
....
}
Ne zaman benim için en yararlı olmuştur kod örnekleri ve Symfony ben çok ilham ve rehberlik için (% symfony_lib_dir% / görev / *) onları gözden tavsiye mevcut görevlerin büyük bir koleksiyon ile birlikte olduğu için. Gerçekten özellikle bu sfTask işlevsellik geniş bir yelpazede kullanır ve benim özel görevler yolumu bulmak için çok önemli olduğunu, proje / sfProjectDeploy.class.php tarafından yardım edildi.
Umut olur.