mirror of
https://github.com/webmasterskaya/joomla-oauth-server.git
synced 2024-11-23 18:24:50 +03:00
implement AbstractImmutableEvent
This commit is contained in:
parent
96db629ab7
commit
abf67a1c6a
@ -0,0 +1,114 @@
|
||||
<?php
|
||||
/**
|
||||
* @package Joomla.Administrator
|
||||
* @subpackage com_oauthserver
|
||||
*
|
||||
* @copyright (c) 2024. Webmasterskaya. <https://webmasterskaya.xyz>
|
||||
* @license MIT; see LICENSE.txt
|
||||
**/
|
||||
|
||||
namespace Webmasterskaya\Component\OauthServer\Administrator\Event;
|
||||
|
||||
abstract class AbstractImmutableEvent extends \Joomla\CMS\Event\AbstractImmutableEvent
|
||||
{
|
||||
/**
|
||||
* A flag to see if the constructor has been already called.
|
||||
*
|
||||
* @var boolean
|
||||
* @since version
|
||||
*/
|
||||
private bool $constructed = false;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param string $name The event name.
|
||||
* @param array $arguments The event arguments.
|
||||
*
|
||||
* @throws \BadMethodCallException
|
||||
* @since version
|
||||
* @noinspection PhpMissingParentConstructorInspection
|
||||
*/
|
||||
public function __construct(string $name, array $arguments = [])
|
||||
{
|
||||
if ($this->constructed)
|
||||
{
|
||||
throw new \BadMethodCallException(
|
||||
sprintf('Cannot reconstruct the AbstractImmutableEvent %s.', $this->name)
|
||||
);
|
||||
}
|
||||
|
||||
$this->name = $name;
|
||||
$this->arguments = [];
|
||||
|
||||
foreach ($arguments as $argumentName => $value)
|
||||
{
|
||||
$this->setArgument($argumentName, $value);
|
||||
}
|
||||
|
||||
$this->constructed = true;
|
||||
}
|
||||
|
||||
public function setArgument($name, $value): AbstractImmutableEvent
|
||||
{
|
||||
if (!$this->constructed)
|
||||
{
|
||||
return parent::setArgument($name, $value);
|
||||
}
|
||||
|
||||
throw new \BadMethodCallException(
|
||||
sprintf(
|
||||
'Cannot set the argument %s of the immutable event %s.',
|
||||
$name,
|
||||
$this->name
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
public function addArgument($name, $value): AbstractImmutableEvent
|
||||
{
|
||||
if (!$this->constructed)
|
||||
{
|
||||
return parent::addArgument($name, $value);
|
||||
}
|
||||
|
||||
throw new \BadMethodCallException(
|
||||
sprintf(
|
||||
'Cannot add the argument %s of the immutable event %s.',
|
||||
$name,
|
||||
$this->name
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
public function removeArgument($name)
|
||||
{
|
||||
if (!$this->constructed)
|
||||
{
|
||||
return parent::removeArgument($name);
|
||||
}
|
||||
|
||||
throw new \BadMethodCallException(
|
||||
sprintf(
|
||||
'Cannot remove the argument %s of the immutable event %s.',
|
||||
$name,
|
||||
$this->name
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
public function clearArguments(): array
|
||||
{
|
||||
if (!$this->constructed)
|
||||
{
|
||||
return parent::clearArguments();
|
||||
}
|
||||
|
||||
throw new \BadMethodCallException(
|
||||
sprintf(
|
||||
'Cannot clear arguments of the immutable event %s.',
|
||||
$this->name
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user