48 lines
930 B
PHP
48 lines
930 B
PHP
|
<?php
|
||
|
|
||
|
declare(strict_types=1);
|
||
|
|
||
|
namespace AppTest;
|
||
|
|
||
|
use Psr\Container\ContainerInterface;
|
||
|
use RuntimeException;
|
||
|
|
||
|
use function array_key_exists;
|
||
|
use function sprintf;
|
||
|
|
||
|
/**
|
||
|
* A PSR Container stub. Useful for testing factories without excessive mocking
|
||
|
*/
|
||
|
class InMemoryContainer implements ContainerInterface
|
||
|
{
|
||
|
/** @var array<string, mixed> */
|
||
|
public array $services = [];
|
||
|
|
||
|
public function setService(string $name, mixed $service): void
|
||
|
{
|
||
|
$this->services[$name] = $service;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param string $id
|
||
|
* @return mixed
|
||
|
*/
|
||
|
public function get($id)
|
||
|
{
|
||
|
if (! $this->has($id)) {
|
||
|
throw new RuntimeException(sprintf('Service not found "%s"', $id));
|
||
|
}
|
||
|
|
||
|
return $this->services[$id];
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @param string $id
|
||
|
* @return bool
|
||
|
*/
|
||
|
public function has($id)
|
||
|
{
|
||
|
return array_key_exists($id, $this->services);
|
||
|
}
|
||
|
}
|