150 lines
3.1 KiB
PHP
150 lines
3.1 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Part of the Joomla Framework Event Package
|
|
*
|
|
* @copyright Copyright (C) 2005 - 2021 Open Source Matters, Inc. All rights reserved.
|
|
* @license GNU General Public License version 2 or later; see LICENSE
|
|
*/
|
|
|
|
namespace Joomla\Event;
|
|
|
|
use InvalidArgumentException;
|
|
|
|
/**
|
|
* Default Event class.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
class Event extends AbstractEvent
|
|
{
|
|
/**
|
|
* Add an event argument, only if it is not existing.
|
|
*
|
|
* @param string $name The argument name.
|
|
* @param mixed $value The argument value.
|
|
*
|
|
* @return $this
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
public function addArgument($name, $value)
|
|
{
|
|
if (!isset($this->arguments[$name])) {
|
|
$this->arguments[$name] = $value;
|
|
}
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Add argument to event.
|
|
*
|
|
* @param string $name Argument name.
|
|
* @param mixed $value Value.
|
|
*
|
|
* @return $this
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
public function setArgument($name, $value)
|
|
{
|
|
$this->arguments[$name] = $value;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Remove an event argument.
|
|
*
|
|
* @param string $name The argument name.
|
|
*
|
|
* @return mixed The old argument value or null if it is not existing.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
public function removeArgument($name)
|
|
{
|
|
$return = null;
|
|
|
|
if (isset($this->arguments[$name])) {
|
|
$return = $this->arguments[$name];
|
|
unset($this->arguments[$name]);
|
|
}
|
|
|
|
return $return;
|
|
}
|
|
|
|
/**
|
|
* Clear all event arguments.
|
|
*
|
|
* @return array The old arguments.
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
public function clearArguments()
|
|
{
|
|
$arguments = $this->arguments;
|
|
$this->arguments = [];
|
|
|
|
return $arguments;
|
|
}
|
|
|
|
/**
|
|
* Stop the event propagation.
|
|
*
|
|
* @return void
|
|
*
|
|
* @since 1.0
|
|
* @deprecated 3.0 Use stopPropagation instead
|
|
*/
|
|
public function stop()
|
|
{
|
|
trigger_deprecation(
|
|
'joomla/event',
|
|
'2.0.0',
|
|
'%s() is deprecated and will be removed in 3.0, use %s::stopPropagation() instead.',
|
|
__METHOD__,
|
|
EventInterface::class
|
|
);
|
|
|
|
$this->stopPropagation();
|
|
}
|
|
|
|
/**
|
|
* Set the value of an event argument.
|
|
*
|
|
* @param string $name The argument name.
|
|
* @param mixed $value The argument value.
|
|
*
|
|
* @return void
|
|
*
|
|
* @since 1.0
|
|
* @throws InvalidArgumentException If the argument name is null.
|
|
*/
|
|
#[\ReturnTypeWillChange]
|
|
public function offsetSet($name, $value)
|
|
{
|
|
if ($name === null) {
|
|
throw new InvalidArgumentException('The argument name cannot be null.');
|
|
}
|
|
|
|
$this->setArgument($name, $value);
|
|
}
|
|
|
|
/**
|
|
* Remove an event argument.
|
|
*
|
|
* @param string $name The argument name.
|
|
*
|
|
* @return void
|
|
*
|
|
* @since 1.0
|
|
*/
|
|
#[\ReturnTypeWillChange]
|
|
public function offsetUnset($name)
|
|
{
|
|
$this->removeArgument($name);
|
|
}
|
|
}
|