46 lines
1.0 KiB
PHP
46 lines
1.0 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace Spark\Resource;
|
||
|
|
||
|
use ReflectionClass;
|
||
|
|
||
|
class ResourceManager
|
||
|
{
|
||
|
private $resourceTypes = [];
|
||
|
|
||
|
private $namedResources = [];
|
||
|
|
||
|
public function registerResourceType(string $name, string $type)
|
||
|
{
|
||
|
$refl = new ReflectionClass($type);
|
||
|
$this->resourceTypes[$name] = $type;
|
||
|
}
|
||
|
|
||
|
public function createResource(string $type, array $options)
|
||
|
{
|
||
|
$resource = new $this->resourceTypes[$type]($options);
|
||
|
return $resource;
|
||
|
}
|
||
|
|
||
|
public function createNamedResource(string $name, string $type, array $options)
|
||
|
{
|
||
|
$resource = $this->createResource($type, $options);
|
||
|
$this->namedResources[$name] = $resource;
|
||
|
return $resource;
|
||
|
}
|
||
|
|
||
|
public function getNamedResource(string $name)
|
||
|
{
|
||
|
return $this->namedResources[$name] ?? null;
|
||
|
}
|
||
|
|
||
|
public function getAllNamedResources(): array
|
||
|
{
|
||
|
return $this->namedResources;
|
||
|
}
|
||
|
|
||
|
public function getAllResourceTypes(): array
|
||
|
{
|
||
|
return $this->resourceTypes;
|
||
|
}
|
||
|
}
|