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