/** * Constructor for empty object registry * @param mixed $model * @param string $typeName * @throws persistr\Exception */ public function __construct($model, $typeName) { $typeName = str_replace('/', '\\', $typeName); $this->typeName = $typeName; if ($model instanceof persistr\Model\Blank) { return; } if (persistr\Registry::persisted($typeName)) { $persistor = persistr\Registry::persistor($typeName); } else { $persistor = persistr\Registry::getPersistorByName($typeName); } if ($persistor instanceof persistr\Persistor) { $this->persistor = $persistor; $dataFilters = []; $outputFilters = []; if ($persistor->hasDataFilters()) { $dataFilterClasses = $persistor->getDataFilters(); foreach ($dataFilterClasses as $filterClass) { if (@class_exists($filterClass)) { $filter = new $filterClass($typeName); $dataFilters[] = $filter; } } } if ($persistor->hasOutputFilters()) { $outputFilterClasses = $persistor->getOutputFilters(); if (is_array($outputFilterClasses)) { foreach ($outputFilterClasses as $filterClass) { if (@class_exists($filterClass)) { $filter = new $filterClass($typeName); $outputFilters[] = $filter; } } } } self::$datafilters[$typeName] = $dataFilters; self::$outputfilters[$typeName] = $outputFilters; } else { throw new persistr\Exception('Class not persisted, cannot instantiate ' . $typeName); } }