/** * Return class instance * @return static **/ static function instance() { if (!Registry::exists($class = get_called_class())) { $ref = new Reflectionclass($class); $args = func_get_args(); Registry::set($class, $args ? $ref->newinstanceargs($args) : new $class()); } return Registry::get($class); }
/** * Returns a class instance **/ static function instance() { $storage = new \Core\Storage(); $classes = $storage->get('CORE.instantiable') ?: []; if (!isset($classes[$class = get_called_class()])) { $ref = new \Reflectionclass($class); $args = func_get_args(); $classes[$class] = $args ? $ref->newinstanceargs($args) : new $class(); $storage->set('CORE.instantiable', $classes); } return $classes[$class] ?: null; }
protected function model($name) { if (isset(self::$_models[$name])) { return self::$_models[$name]; } $class = APP_NAMESPACE . '\\Models\\' . $name; $ref = new \Reflectionclass($class); $args = array_slice(func_get_args(), 1); self::$_models[$name] = $args ? $ref->newinstanceargs($args) : new $class(); return self::$_models[$name]; }