[TOC]
:-: **1 初始化前加載的文件**
>[info] base.php (index.php文件中加載)
> Loader.php (base.php文件中加載)
> convention.php (base.php文件中加載)
* * * * *
:-: **2 初始化前各個文件的作用**
>[info] 1 base.php 框架基礎環境搭建 注冊自動加載,注冊錯誤處理,加載默認配置
>2 Loader.php 自動加載
>3 convention.php 默認配置
* * * * *
:-: **3 base.php源代碼分析**
~~~
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([
'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,
'rule_name' => route\RuleName::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 __DIR__ . '/convention.php');
// 加載composer autofile文件
Loader::loadComposerAutoloadFiles();
~~~
>[info] 1 注冊自動加載
> **自動加載見 框架工具 自動加載**
> 2 注冊錯誤處理
> **錯誤處理見 框架工具 異常錯誤**
> 3 注冊Psr日志接口
> 4 注冊核心類 Container::getInstance()->bind()
> 5 注冊核心類的靜態代理 Facade::bind()
>
> **容器和門面 見 框架核心 容器與門面**
* * * * * *
:-: **4 convention.php默認配置**
* * * * *
>[info] 主要包含 thinkphp運行的默認配置內容
> 其中的配置字段可以在config目錄下進行自定義配置
>[warning] 配置的內容一級分類包含
> app 應用運行配置
> template 模板解析配置
> log 日志記錄配置
> trace trace調試配置
> cache 緩存存儲配置
> session session存儲配置
> cookie cookie存儲配置
> databse 數據庫連接配置
> paginate 分頁配置