[EventDispatcher] added some setters/getters to Event

This commit is contained in:
Fabien Potencier 2010-01-31 17:25:01 +01:00
parent 07817ba7d8
commit 8ddac2669b
2 changed files with 59 additions and 2 deletions

View File

@ -109,6 +109,46 @@ class Event implements \ArrayAccess
return $this->parameters;
}
/**
* Returns true if the parameter exists.
*
* @param string $name The parameter name
*
* @return Boolean true if the parameter exists, false otherwise
*/
public function hasParameter($name)
{
return array_key_exists($name, $this->parameters);
}
/**
* Returns a parameter value.
*
* @param string $name The parameter name
*
* @return mixed The parameter value
*/
public function getParameter($name)
{
if (!array_key_exists($name, $this->parameters))
{
throw new \InvalidArgumentException(sprintf('The event "%s" has no "%s" parameter.', $this->name, $name));
}
return $this->parameters[$name];
}
/**
* Sets a parameter.
*
* @param string $name The parameter name
* @param mixed $value The parameter value
*/
public function setParameter($name, $value)
{
$this->parameters[$name] = $value;
}
/**
* Returns true if the parameter exists (implements the ArrayAccess interface).
*

View File

@ -12,7 +12,7 @@ require_once __DIR__.'/../../../bootstrap.php';
use Symfony\Components\EventDispatcher\Event;
$t = new LimeTest(11);
$t = new LimeTest(16);
$subject = new stdClass();
$parameters = array('foo' => 'bar');
@ -26,9 +26,26 @@ $t->is($event->getSubject(), $subject, '->getSubject() returns the event subject
$t->diag('->getName()');
$t->is($event->getName(), 'name', '->getName() returns the event name');
// ->getParameters()
// ->getParameters() ->setParameter() ->hasParameter() ->getParameter()
$t->diag('->getParameters()');
$t->is($event->getParameters(), $parameters, '->getParameters() returns the event parameters');
$t->is($event->getParameter('foo'), 'bar', '->getParameter() returns the value of a parameter');
$event->setParameter('foo', 'foo');
$t->is($event->getParameter('foo'), 'foo', '->setParameter() changes the value of a parameter');
$t->ok($event->hasParameter('foo'), '->hasParameter() returns true if the parameter is defined');
unset($event['foo']);
$t->ok(!$event->hasParameter('foo'), '->hasParameter() returns false if the parameter is not defined');
try
{
$event->getParameter('foobar');
$t->fail('->getParameter() throws an \InvalidArgumentException exception when the parameter does not exist');
}
catch (\InvalidArgumentException $e)
{
$t->pass('->getParameter() throws an \InvalidArgumentException exception when the parameter does not exist');
}
$event = new Event($subject, 'name', $parameters);
// ->getReturnValue() ->setReturnValue()
$t->diag('->getReturnValue() ->setReturnValue()');