services[ $name ]);
}
/**
* @param string $name
*
* @return mixed
* @throws Exception
*/
public function get($name)
{
if (! $this->has($name)) {
// phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped -- Exception text is not direct output and is escaped at render time.
throw new Exception(sprintf('No service named %s was registered.', $name));
}
$service = $this->services[ $name ];
// is this a resolvable service?
if (is_callable($service)) {
// resolve service if it's not resolved yet
if (! isset($this->resolved_services[ $name ])) {
$this->resolved_services[ $name ] = call_user_func($service);
}
return $this->resolved_services[ $name ];
}
return $this->services[ $name ];
}
/**
* (PHP 5 >= 5.0.0)
* Whether a offset exists
*
* @link http://php.net/manual/en/arrayaccess.offsetexists.php
*
* @param mixed $offset
* An offset to check for. *
* * @return boolean true on success or false on failure. * *
* The return value will be casted to boolean if non-boolean was returned.
*/
public function offsetExists($offset): bool
{
return $this->has($offset);
}
/**
* (PHP 5 >= 5.0.0)
* Offset to retrieve
*
* @link http://php.net/manual/en/arrayaccess.offsetget.php
*
* @param mixed $offset
* The offset to retrieve. *
* * @return mixed Can return all value types. */ // PHP 8.1 expects a mixed return type here, but the plugin still supports PHP 7.4. #[\ReturnTypeWillChange] public function offsetGet($offset) { return $this->get($offset); } /** * (PHP 5 >= 5.0.0)* The offset to assign the value to. *
* @param mixed $value* The value to set. *
* * @return void */ public function offsetSet($offset, $value): void { $this->services[ $offset ] = $value; } /** * (PHP 5 >= 5.0.0)* The offset to unset. *
* * @return void */ public function offsetUnset($offset): void { unset($this->services[ $offset ]); } }