다음 코드 그것은 TransactionCreated
이벤트를 전달하고 클래스 자체와 클래스의 속성을 설정하기 위해 호출 얻을 onCreatedNewTransaction
기능에 의해 잡힐 가정심포니하는 EventDispatcher 가입자는
use Application\Events\TransactionCreatedEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\EventDispatcher\EventDispatcher;
class Transaction implements EventSubscriberInterface
{
protected $date;
protected $name;
protected $address;
protected $phone;
protected $price_with_vat;
protected $transaction_type;
protected $receipt;
protected $currency;
protected function __construct($date, $name, $address, $phone, $price_with_vat, $transaction_type, $receipt, $currency)
{
$dispatcher = new EventDispatcher();
$dispatcher->addSubscriber($this);
$dispatcher->dispatch(TransactionCreatedEvent::NAME, new TransactionCreatedEvent($date, $name, $address, $phone, $price_with_vat, $transaction_type, $receipt, $currency));
}
public static function CreateNewTransaction($date, $name, $address, $phone, $price_with_vat, $transaction_type, $receipt, $currency){
return new Transaction($date, $name, $address, $phone, $price_with_vat, $transaction_type, $receipt, $currency);
}
private function onCreateNewTransaction($Event){
$this->date = $Event->date;
$this->name = $Event->name;
$this->address = $Event->address;
$this->phone = $Event->phone;
$this->price_with_vat = $Event->price_with_vat;
$this->transaction_type = $Event->transaction_type;
$this->receipt = $Event->receipt;
$this->currency = $Event->currency;
}
public static function getSubscribedEvents()
{
return array(TransactionCreatedEvent::NAME => 'onCreateNewTransaction');
}
}
일을 해달라고.
Transaction
클래스는
$Transaction = Transaction::CreateNewTransaction('6/6/2016', 'John'....);
처럼 인스턴스화하지만 난이 프로젝트를 디버깅 할 때 $Transaction
객체는 null
값이 있습니다. 나는 breakpoint
을 onCreateNewTransaction
방법으로 설정 했으므로 함수가 호출되지 않는다는 것을 알았다.
는 업데이트]
문제
`를 해결 onCreateNewTransaction '대신 개인 귀하의 방법 CreateNewTransaction
가 정적 인
뭔가가 누락되었지만이 시나리오에서 이벤트가 필요한 이유는 무엇입니까? 생성자에서 이러한 속성을 할당하는 것이 더 바람직하지 않습니까? 그 외에도 EventDispatcher를 생성자에 인스턴스화하는 대신 삽입해야하므로 고정 종속성을 생성하게됩니다. –