// +---------------------------------------------------------------------- namespace think; // 载入Loader类 require __DIR__ . '/library/think/Loader.php'; // 注册自动加载 Loader::register(); //// 注册错误和异常处理机制 //Error::register(); // //// 实现日志接口 //if (interface_exists('Psr\Log\LoggerInterface')) { // interface LoggerInterface extends \Psr\Log\LoggerInterface // {} //} else { // interface LoggerInterface // {} //} //通过 Container::getInstance()->bind() 先将核心类库实例化后注册到容器内 //再通过 Facade::bind() 将核心类转成静态代理, //最后使用 Loader::addClassAlias() 给静态代理注册类别名,方便直接静态调用 // 注册核心类到容器 Container::getInstance()->bind([ 'app' => App::class, 'build' => Build::class, 'cache' => Cache::class, 'config' => Config::class, 'cookie' => Cookie::class, 'debug' => Debug::class, 'env' => Env::class, 'hook' => Hook::class, 'lang' => Lang::class, 'log' => Log::class, 'request' => Request::class, 'response' => Response::class, 'route' => Route::class, 'session' => Session::class, 'url' => Url::class, 'validate' => Validate::class, 'view' => View::class, 'middlewareDispatcher' => http\middleware\Dispatcher::class, // 接口依赖注入 'think\LoggerInterface' => Log::class, ]); // 注册核心类的静态代理 Facade::bind([ facade\App::class => App::class, facade\Build::class => Build::class, facade\Cache::class => Cache::class, facade\Config::class => Config::class, facade\Cookie::class => Cookie::class, facade\Debug::class => Debug::class, facade\Env::class => Env::class, facade\Hook::class => Hook::class, facade\Lang::class => Lang::class, facade\Log::class => Log::class, facade\Request::class => Request::class, facade\Response::class => Response::class, facade\Route::class => Route::class, facade\Session::class => Session::class, facade\Url::class => Url::class, facade\Validate::class => Validate::class, facade\View::class => View::class, ]); // 注册类库别名 Loader::addClassAlias([ 'App' => facade\App::class, 'Build' => facade\Build::class, 'Cache' => facade\Cache::class, 'Config' => facade\Config::class, 'Cookie' => facade\Cookie::class, 'Db' => Db::class, 'Debug' => facade\Debug::class, 'Env' => facade\Env::class, 'Facade' => Facade::class, 'Hook' => facade\Hook::class, 'Lang' => facade\Lang::class, 'Log' => facade\Log::class, 'Request' => facade\Request::class, 'Response' => facade\Response::class, 'Route' => facade\Route::class, 'Session' => facade\Session::class, 'Url' => facade\Url::class, 'Validate' => facade\Validate::class, 'View' => facade\View::class, ]); // 加载惯例配置文件 facade\Config::set(__include_file(__DIR__ . '/convention.php')); // 加载composer autofile文件 Loader::loadComposerAutoloadFiles();