6. Eventy v Nette?
class Circle extends NetteObject
{
public $onChange = [];
public function setRadius($radius)
{
$this->radius = max(0, $radius);
$this->onChange($this, $this->radius);
}
7. Eventy v Nette?
$circle = new Circle;
$circle->onChange[] =
function($circle, $newValue) {
echo 'there was a change!';
};
$circle->setRadius(10);
32. Vraťme se na začátek...
public function __construct(
EntityManager $em,
NetteSecurityUser $user,
NetteHttpSession $session
){
33. … a přidejme si jeden event
class OrderProcess
public $onFinish = [];
function finish(Order $order) {
// ...
$this->onFinish($this, $order);
}
34. … a napíšeme si listenery
class OrderMailerListener
implements Subscriber {
function getSubscribedEvents() {
return [
'OrderProcess::onFinish'
];
}
35. … a napíšeme si listenery
class OrderMailerListener
function __construct(IMailer $mailer);
function onFinish(Order $order) {
// ..
$this->mailer->send($message);
}
36. … a napíšeme si listenery
class CreditsRewardListener
function __construct(
Rewarder $r, User $user);
function onFinish(Order $order) {
$this->rewarder->reward(
$this->user->id,
$order->price * 0.05);
}
37. … a napíšeme si listenery
class SmsSenderListener
function __construct(SmsSender $sender);
function onFinish(Order $order) {
// ..
$this->sender->send($message);
}