DIY 實現 ThinkPHP 核心框架 (十)App 類

cn-five發表於2020-09-04

在 ThinkPHP 5 和 6 中, App 類的主要功能為初始化 application 目錄中的應用程式,以及路由檢測等操作。它繼承了 Container 類,在其基礎上增加了與應用程式相關的功能。
建立 core/src/think/App.php 檔案

namespace think;

class App extends Container
{
    // 無路由檢測、請求、分發方便測試
    public function run()
    {
        // 呼叫 index()
        $controller = $this->make('\\app\\index\\controller\\Index');
        //呼叫 Response 類靜態方法建立 Response 例項
        return Response::create($controller->test());
    }

建立 core/src/think/Response.php

declare (strict_types = 1);

namespace think;

class Response
{
    protected $data;

    // 構造方法傳入相應資料
    public function __construct($data = null)
    {
        $this->data = $data;
    }

    // 輸出資料
    public function send(): void
    {
        echo $this->data;
    }

    // 建立自身例項
    public static function create($data)
    {
        return new static($data);
    }
}

修改 index.php 進行測試

require __DIR__ . '/../core/base.php';

\think\Container::get('app')->run()->send();

成功列印

#################################
#################################
#################################
######CONTROLLER===>Index########
#################################
#################################
#################################
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章