/**
* @param DocumentManager $dm
* @param string $documentName
* @param SpecificationVisitorFactoryInterface $specificationVisitorFactory
* @param ComparatorVisitorFactoryInterface $comparatorVisitorFactory
*/
public function __construct(DocumentManager $dm, $documentName = null, SpecificationVisitorFactoryInterface $specificationVisitorFactory = null, ComparatorVisitorFactoryInterface $comparatorVisitorFactory = null)
{
parent::__construct($dm, $documentName);
if ($specificationVisitorFactory === null) {
$specificationVisitorFactory = new SpecificationVisitorFactory();
}
if ($comparatorVisitorFactory === null) {
$comparatorVisitorFactory = new ComparatorVisitorFactory();
}
$this->specificationVisitorFactory = $specificationVisitorFactory;
$this->comparatorVisitorFactory = $comparatorVisitorFactory;
$this->factory = Delegate::fromClosure(function () use($dm, $documentName) {
return new static($dm, $documentName);
});
}