Initial commit
This commit is contained in:
46
src/Resource/ResourceManager.php
Normal file
46
src/Resource/ResourceManager.php
Normal file
@ -0,0 +1,46 @@
|
||||
<?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;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user