public static function init($namespace) { self::$namespace = $namespace; self::$prefix = Config::get('app.prefix'); self::$prefix = (self::$prefix == '' ? '' : '/') . self::$prefix; self::setupAutoloader(); logger\Logger::init('logs/app.log'); Config::readPath(self::$configPath, 'ntentan'); kaikai\Cache::init(); panie\InjectionContainer::bind(ModelClassResolverInterface::class)->to(ClassNameResolver::class); panie\InjectionContainer::bind(ModelJoinerInterface::class)->to(ClassNameResolver::class); panie\InjectionContainer::bind(TableNameResolverInterface::class)->to(nibii\Resolver::class); panie\InjectionContainer::bind(ComponentResolverInterface::class)->to(ClassNameResolver::class); panie\InjectionContainer::bind(ControllerClassResolverInterface::class)->to(ClassNameResolver::class); panie\InjectionContainer::bind(controllers\RouterInterface::class)->to(DefaultRouter::class); if (Config::get('ntentan:db.driver')) { panie\InjectionContainer::bind(DriverAdapter::class)->to(Resolver::getDriverAdapterClassName()); panie\InjectionContainer::bind(atiaa\Driver::class)->to(atiaa\Db::getDefaultDriverClassName()); } Controller::setComponentResolverParameters(['type' => 'component', 'namespaces' => [$namespace, 'controllers\\components']]); nibii\RecordWrapper::setComponentResolverParameters(['type' => 'behaviour', 'namespaces' => [$namespace, 'nibii\\behaviours']]); controllers\ModelBinderRegister::setDefaultBinderClass(controllers\model_binders\DefaultModelBinder::class); controllers\ModelBinderRegister::register(utils\filesystem\UploadedFile::class, controllers\model_binders\UploadedFileBinder::class); }
private function getMethod($path) { $methods = kaikai\Cache::read("controller.{$this->getClassName()}.methods", function () { $class = new ReflectionClass($this); $methods = $class->getMethods(\ReflectionMethod::IS_PUBLIC); $results = []; foreach ($methods as $method) { $methodName = $method->getName(); if (substr($methodName, 0, 2) == '__') { continue; } if (array_search($methodName, ['addComponent', 'executeControllerAction', 'setComponentResolverParameters'])) { continue; } $docComments = $this->parseDocComment($method->getDocComment()); $keyName = isset($docComments['action']) ? $docComments['action'] . $docComments['method'] : $methodName; $results[$keyName] = ['name' => $method->getName(), 'binder' => isset($docComments['binder']) ? $docComments['binder'] : controllers\ModelBinderRegister::getDefaultBinderClass()]; } return $results; }); if (isset($methods[$path . utils\Input::server('REQUEST_METHOD')])) { return $methods[$path . utils\Input::server('REQUEST_METHOD')]; } else { if (isset($methods[$path])) { return $methods[$path]; } } return false; }