di = new FactoryDefault(); $this->app = new Application(); $this->loader = new Loader(); $this->initAppEnv(); $this->initAppConfig(); $this->initAppSetting(); $this->registerLoaders(); $this->registerServices(); $this->registerModules(); $this->registerErrorHandler(); } public function handle() { $this->app->setDI($this->di); $this->app->handle()->send(); } protected function registerLoaders() { $this->loader->registerNamespaces([ 'App' => app_path(), 'Bootstrap' => bootstrap_path(), ]); $this->loader->registerFiles([ vendor_path('autoload.php'), app_path('Library/Helper.php'), ]); $this->loader->register(); } protected function registerServices() { $providers = [ ConfigProvider::class, AnnotationProvider::class, CacheProvider::class, CookieProvider::class, CryptProvider::class, CsrfTokenProvider::class, DatabaseProvider::class, EventsManagerProvider::class, FlashSessionProvider::class, LoggerProvider::class, MetaDataProvider::class, RequestProvider::class, ResponseProvider::class, RouterProvider::class, SessionProvider::class, UrlProvider::class, ViewProvider::class, VoltProvider::class, ]; foreach ($providers as $provider) { /** * @var AppProvider $service */ $service = new $provider($this->di); $service->register(); } } protected function registerModules() { $modules = [ 'api' => [ 'className' => 'App\Http\Api\Module', 'path' => app_path('Http/Api/Module.php'), ], 'admin' => [ 'className' => 'App\Http\Admin\Module', 'path' => app_path('Http/Admin/Module.php'), ], 'home' => [ 'className' => 'App\Http\Home\Module', 'path' => app_path('Http/Home/Module.php'), ], ]; $this->app->registerModules($modules); } protected function registerErrorHandler() { return new HttpErrorHandler(); } }