/** * @param $extension Extension */ public function __construct(Extension $extension) { if (empty($this->modelClass)) { $this->modelClass = ReflectionHelper::getPrefixFromControllerClass(get_called_class()); } if (empty($this->base)) { $this->base = Inflector::pluralize(strtolower(ReflectionHelper::stripClassName($this->modelClass))); } parent::__construct($extension); if (class_exists($this->modelClass)) { $this->model = call_user_func($this->modelClass . '::init', $this->getApp()); } }
public function __construct($extension) { $this->extension = $extension; $systemCache = $this->getApp()->getCacheRepository('system'); $cacheKey = get_called_class() . get_class() . '::__construct'; /** * @var $cache \MABI\CachedControllerConstructor */ if ($systemCache != null && is_object($cache = $systemCache->get($cacheKey))) { $this->base = $cache->base; foreach ($cache->middlewareFiles as $middlewareClass => $middlewareFile) { $this->addMiddlewareByClass($middlewareClass, $middlewareFile); } $this->documentationName = $cache->documentationName; return; } if (empty($this->base)) { $this->base = strtolower(ReflectionHelper::stripClassName(ReflectionHelper::getPrefixFromControllerClass(get_called_class()))); } $rClass = new \ReflectionClass(get_called_class()); // Load middlewares from @middleware directive $middlewareFiles = array(); $middlewares = ReflectionHelper::getDocDirective($rClass->getDocComment(), 'middleware'); foreach ($middlewares as $middlewareClass) { $middlewareFile = ReflectionHelper::stripClassName($middlewareClass) . '.php'; $this->addMiddlewareByClass($middlewareClass, $middlewareFile); $middlewareFiles[$middlewareClass] = $middlewareFile; } if (empty($this->documentationName)) { $this->documentationName = ucwords(ReflectionHelper::stripClassName(ReflectionHelper::getPrefixFromControllerClass(get_called_class()))); } if ($systemCache != null) { $systemCache->forever($cacheKey, new CachedControllerConstructor($this->base, $middlewareFiles, $this->documentationName)); } }