Symfony - görev - seçenekleri ile çalışma

2 Cevap php

Herhangi bir yerde (öğretici veya belgeler) nasıl özel symfony görev seçenekleri ile düzgün çalışması yazılı mı?

class mloMaintainceTask extends sfBaseTask
{
  protected function configure()
  {
    // ...
    $this->setOptions(array(
      new sfCommandOption('mloOption');
    ));
  }

  private function method3()
  {
    return $this->getOption('mloOption');
  }
}

Örnekteki method3 gelen getOption yöntemi gibi bir şey var mı

2 Cevap

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.

Siz açıkça diğer yöntemlere gerçek seçenekleri değerlerini geçmelidir.

private function method3($optionvalue)
{
  return $optionvalue;
}
protected function execute($arguments = array(), $options = array())
{
  /*blablabla*/
  echo $this->method3($options['mlooption']);
  /*blablabla*/
}