その
class PowerPlantEvent extends Event
{
/**
* @var \DateTime
*/
public $startDate;
/**
* @var \DateTime
*/
public $endDate;
/**
* @var Something
*/
public $measurement;
public $field;
/**
* PowerPlantEvent constructor.
*
* @param \DateTime $startDate
* @param \DateTime $endDate
* @param Something $measurement
* @param $field
*/
public function __construct(\DateTime $startDate, \DateTime $endDate, Something $measurement, $field)
{
$this->startDate = $startDate;
$this->endDate = $endDate;
$this->measurement = $measurement;
$this->field = $field;
}
}
のための新しいEventクラスを作成し、
$dispatcher = $this->container->get('event_dispatcher');
$dispatcher->dispatch(
Events::POWERPLANT_GET_DATA,
new PowerPlantEvent($startDate, $endDate, $measurement, $field)
);
と加入者でのアクセス(またはイベントリスナー)とそれを呼び出すこともできますは、コンストラクタでオプションにすることができます。
そして、このように派遣
use Symfony\Component\EventDispatcher\Event;
final class PowerPlantEvent extends Event
{
/**
* @var PowerPlantAction
*/
private $powerPlantAction;
/**
* @var \DateTime
*/
private $startDate;
/**
* @var \DateTime
*/
private $endDate;
/**
* @var int
*/
private $measurement;
/**
* @var string
*/
private $field;
public function __construct(
$powerPlantAction,
$startDate = null,
$endDate = null,
$measurement = null,
$field = null
) {
$this->powerPlantAction = $powerPlantAction;
$this->startDate = $startDate;
$this->endDate = $endDate;
$this->measurement = $measurement;
$this->field = $field;
}
public function getPowerPlantAction()
{
return $this->powerPlantAction;
}
public function getStartDate()
{
return $this->startDate;
}
public function getEndDate()
{
return $this->endDate;
}
public function getMeasurement()
{
return $this->measurement;
}
public function getField()
{
return $this->field;
}
}
:
$this->eventDispatcher->dispatch(
Events::POWERPLANT_GET_DATA,
new PowerPlantEvent($this->getPowerPlantAction($id))
);
または:あなたの加入者で
$this->eventDispatcher->dispatch(
Events::POWERPLANT_GET_DATA,
new PowerPlantEvent(
$this->getPowerPlantAction($id),
$startDate,
$endDate,
$measurement,
$field
)
);
ちょうどそれらのゲッターを使用します。
public function onPowerPlantGetData(PowerPlantEvent $powerPlantEvent)
{
$powerPlantEvent->getStartDate();
// ...
}
私のようなdispachイベントができます:$ディスパッチャ - >ディスパッチ(Events :: POWERPLANT_GET_DATA、新しいPowe rPlantEvent($ this-> getPowerPlantAction($ id))、$ startDate、$ endDate、$ measurement、$ field);それとも別の方法がありますか? – sanof