Source of file Event.php
Size: 3,624 Bytes - Last Modified: 2017-11-08T13:54:24+00:00
/home/travis/build/bluzphp/framework/src/EventManager/Event.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 | <?php /** * Bluz Framework Component * * @copyright Bluz PHP Team * @link https://github.com/bluzphp/framework */ declare(strict_types=1); namespace Bluz\EventManager; /** * Representation of an event * * @package Bluz\EventManager */ class Event { /** * @var string event name */ protected $name; /** * @var string|object the event target */ protected $target; /** * @var array|object the event parameters */ protected $params = []; /** * Constructor * * Accept a target and its parameters. * * @param string $name Event name * @param string|object $target * @param array|object $params */ public function __construct($name, $target = null, $params = null) { $this->setName($name); if (null !== $target) { $this->setTarget($target); } if (null !== $params) { $this->setParams($params); } } /** * Get event name * * @return string */ public function getName() { return $this->name; } /** * Get the event target * * This may be either an object, or the name of a static method. * * @return string|object */ public function getTarget() { return $this->target; } /** * Overwrites parameters * * @param array|object $params * * @return Event * @throws EventException */ public function setParams($params) { if (!is_array($params) && !is_object($params)) { throw new EventException( 'Event parameters must be an array or object; received `' . gettype($params) . '`' ); } $this->params = $params; return $this; } /** * Get all parameters * * @return array|object */ public function getParams() { return $this->params; } /** * Get an individual parameter * * If the parameter does not exist, the $default value will be returned. * * @param string|int $name * @param mixed $default * * @return mixed */ public function getParam($name, $default = null) { if (is_array($this->params)) { // Check in params that are arrays or implement array access return $this->params[$name] ?? $default; } elseif (is_object($this->params)) { // Check in normal objects return $this->params->{$name} ?? $default; } else { // Wrong type, return default value return $default; } } /** * Set the event name * * @param string $name * * @return Event */ public function setName($name) { $this->name = (string)$name; return $this; } /** * Set the event target/context * * @param null|string|object $target * * @return Event */ public function setTarget($target) { $this->target = $target; return $this; } /** * Set an individual parameter to a value * * @param string|int $name * @param mixed $value * * @return Event */ public function setParam($name, $value) { if (is_array($this->params)) { // Arrays or objects implementing array access $this->params[$name] = $value; } else { // Objects $this->params->{$name} = $value; } return $this; } } |