核心概念
- 單一入口
- Application
- Kernel
- Request
- Response
單一入口
先來看laravel程式的nginx配置檔案,nginx首先判斷請求的檔案是否存在,如果不存在就交給index.php
去處理。index.php
就是laravel程式的唯一入口。
root ${laravel_path}/public; # laravel根目錄設定
location / {
index index.php;
try_files $uri $uri/ /index.php?$query_string;
}
Application
Application是一個伺服器容器物件,它負責管理類依賴關係並執行依賴注入(DI)。
由此可見,它有兩個主要的功能:1. 建立類,2. 構造建立類需要的引數。
Application就如同一個工廠的車間,你只需要把原材料放進去,它會自動生成出成品。
基本使用方法
class Car{
function __toString()
{
return 'Car'.mt_rand(1,100);
}
}
$app = new \Illuminate\Foundation\Application();//容器
$app->bind('car',Car::class);// 加入原材料(規則)
foreach (range(1, 10) as $k) {
echo $app->make('car') . "\r\n";//生產成品
}
Kernel
接收請求到響應請求的整個過程都是由Kernel負責。
Request
所有的請求相關的資訊都包含在Request
物件裡面。換句話說要獲取請求的任何資訊都應該從這個物件裡面獲取。
Response
所有的返回給客戶端的資料都被包裝成為了一個Response
物件。
生命週期
- nginx把http請求轉發給
public/index.php
- 建立Application物件
- 往
Application
裡面註冊App\Http\Kernel::class
物件(Kernel) - 使用
Application
建立Kernel
物件 - 建立
Request
物件 - 呼叫
Kernel
的handle
方法處理Request
請求,並返回Response
物件 - 使用
Response
的send
方法輸出結果 - 呼叫
Kernel
的terminate
方法做相關清理的操作
本作品採用《CC 協議》,轉載必須註明作者和本文連結