* @copyright 2014 Fabian Grutschus. All rights reserved. * @license BSD * @link http://github.com/fabiang/xmpp */ namespace Fabiang\Xmpp\Event; use Fabiang\Xmpp\Exception\OutOfRangeException; use Fabiang\Xmpp\Exception\InvalidArgumentException; /** * Generic event. * * @package Xmpp\Event */ class Event implements EventInterface { /** * Event name. * * @var string */ protected $name; /** * Target object. * * @var object */ protected $target; /** * Event parameters. * * @var array */ protected $parameters = []; /** * Event stack. * * @var array */ protected $eventStack = []; /** * {@inheritDoc} */ public function getName() { return $this->name; } /** * {@inheritDoc} */ public function getTarget() { return $this->target; } /** * {@inheritDoc} */ public function getParameters() { return $this->parameters; } /** * {@inheritDoc} */ public function setName($name) { $this->name = (string) $name; return $this; } /** * {@inheritDoc} */ public function setTarget($target) { $this->target = $target; return $this; } /** * {@inheritDoc} */ public function setParameters(array $parameters) { $this->parameters = array_values($parameters); return $this; } /** * {@inheritDoc} */ public function getEventStack() { return $this->eventStack; } /** * {@inheritDoc} */ public function setEventStack(array $eventStack) { $this->eventStack = $eventStack; return $this; } /** * {@inheritDoc} */ public function getParameter($index) { $parameters = $this->getParameters(); if (!is_int($index)) { throw new InvalidArgumentException( 'Argument #1 of "' . __CLASS__ . '::' . __METHOD__ . '" must be an integer' ); } if (!array_key_exists($index, $parameters)) { throw new OutOfRangeException("The offset $index is out of range."); } return $parameters[$index]; } }