DIY 实现 ThinkPHP 核心框架 (十)App 类

在 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 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!