用 Composer 組建了個 PHP 框架

guanguans發表於2020-12-22

大約在兩三年前自己就有過寫個 PHP web 框架的想法,期間也嘗試過去實踐開發,但總是由於各種各樣的原因並沒有完成。

這次終於恆心下來,忙裡偷閒的組建了一個自己的 PHP 微框架。前前後後零零碎碎的開發了快一個月的時間,直到今天完成文件的編寫,才向大家呈現。

除了框架本身的(Coole)核心程式碼,還提供一個框架應用(coolephp/skeleton)模板,另外編寫了一份簡陋的文件, 望能給 也想寫框架的人帶來一點參考(大神請忽略)。

生命週期

  1. 客戶端向入口指令碼 index.php 發起請求。
  2. 入口指令碼中建立應用,嚮應用中註冊配置服務、核心服務、第三方服務。
  3. 定義路由,載入到應用中。
  4. 啟動執行應用。
  5. 建立請求物件。
  6. 根據請求物件解析路由,建立控制器例項。
  7. 動作呼叫模型資料,渲染到檢視,生成響應物件。
  8. 管道過濾響應。
  9. 返回響應給客戶端。
  10. 終止生命週期。

命令列介面

安裝框架

$ composer require guanguans/coole -vvv

快速開始

<?php

use Guanguans\Coole\App;
use Guanguans\Coole\Facade\Router;
use Symfony\Component\HttpFoundation\Request;

require __DIR__.'/vendor/autoload.php';

// 1. 建立應用
$app = new App();
$app['debug'] = true;

// 2. 定義一個帶中介軟體的路由
Router::get('/', function (){
    return 'This is the Coole framework.';
})->setMiddleware(function (Request $request, Closure $next){
    printf('Before request.<br>');
    $response = $next($request);
    printf('<br>After request.');

    return $response;
});

// 3. 監聽執行
$app->run();

框架中每項功能職責所用到的元件

參考的文章及借鑑的框架

官方文件

原始碼連結

本作品採用《CC 協議》,轉載必須註明作者和本文連結
No practice, no gain in one's wit. 我的 Gitub

相關文章