for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace GBProd\AlgoliaSpecification;
use GBProd\AlgoliaSpecification\QueryFactory\Factory;
use GBProd\Specification\Specification;
/**
* Registry class for factories
*
* @author gbprod <[email protected]>
*/
class Registry
{
* @var array<Factory>
private $factories = [];
* Register a Factory
* @param string classname Fully qualified classname of the handled specification
* @param Factory $factory
public function register($classname, Factory $factory)
$this->factories[$classname] = $factory;
}
* Get registred Factory for Specification
* @param Specification $spec
* @return Factory
* @throw OutOfRangeException if Factory not found
public function getFactory(Specification $spec)
if (!isset($this->factories[get_class($spec)])) {
throw new \OutOfRangeException(sprintf(
'Factory for Specification "%s" not registred',
get_class($spec)
));
return $this->factories[get_class($spec)];