guanguans / guanguans.github.io

guanguans 博客
https://www.guanguans.cn
Other
55 stars 6 forks source link

组建自己的 PHP 框架 #38

Open guanguans opened 3 years ago

guanguans commented 3 years ago

组建自己的 PHP 框架

大约在两三年前自己就有过写个 PHP web 框架的想法,期间也尝试过去实践开发,但总是由于各种各样的原因并没有完成。

这次终于恒心下来,忙里偷闲的组建了一个自己的 PHP 微框架。前前后后零零碎碎的开发了快一个月的时间,直到今天完成文档的编写,才向大家呈现。

除了框架本身的(Coole)核心代码,还提供一个框架应用(coolephp/skeleton)模板,另外编写了一份简陋的文档, 望能给 也想写框架的人带来一点参考(大神请忽略)。

生命周期

life-cycle

  1. 客户端向入口脚本 index.php 发起请求。
  2. 入口脚本中创建应用,向应用中注册配置服务、核心服务、第三方服务。
  3. 定义路由,载入到应用中。
  4. 启动运行应用。
  5. 创建请求对象。
  6. 根据请求对象解析路由,创建控制器实例。
  7. 动作调用模型数据,渲染到视图,生成响应对象。
  8. 管道过滤响应。
  9. 返回响应给客户端。
  10. 终止生命周期。

命令行界面

console

安装框架

$ 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();

框架中每项功能职责所用到的组件

参考的文章及借鉴的框架

官方文档

源码链接