大概在两三年前本人就有过写个 PHP web 框架的想法,期间也尝试过来实际开发,但总是因为各种各样的起因并没有实现。
这次终于恒心下来,忙里偷闲的组建了一个本人的 PHP 微框架。前前后后零零碎碎的开发了快一个月的工夫,直到明天实现文档的编写,才向大家出现。
除了框架自身的(Coole)外围代码,还提供一个框架利用(coolephp/skeleton)模板,另外编写了一份简陋的文档, 望能给 也想写框架的人带来一点参考
(大神请疏忽)。
生命周期
- 客户端向入口脚本 index.php 发动申请。
- 入口脚本中创立利用,向利用中注册配置服务、外围服务、第三方服务。
- 定义路由,载入到利用中。
- 启动运行利用。
- 创立申请对象。
- 依据申请对象解析路由,创立控制器实例。
- 动作调用模型数据,渲染到视图,生成响应对象。
- 管道过滤响应。
- 返回响应给客户端。
- 终止生命周期。
命令行界面
装置框架
$ composer require guanguans/coole -vvv
疾速开始
<code class="php"><?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();
框架中每项性能职责所用到的组件
- guanguans/di – 容器(illuminate/container 的衍生版)
- symfony/http-kernel – HTTP 内核
- symfony/http-foundation – HTTP 对象管理层
- symfony/routing – 路由
- symfony/event-dispatcher – 事件调度器
- filp/whoops – 错误处理
- symfony/error-handler – 错误处理
- monolog/monolog – 日志
- mpociot/pipeline – 管道(中间件的实现)
- symfony/console – 命令行
- symfony/finder – 文件治理
- topthink/think-orm – ORM
- twig/twig – 模板引擎
- vlucas/phpdotenv – env
- tightenco/collect – 汇合
参考的文章及借鉴的框架
- https://symfony.com/doc/current/create_framework/index.html – 倡议浏览
- https://github.com/slimphp/Slim – 根本所有的内置组件都实现 PSR 的接口标准, 足够标准化。
- https://github.com/silexphp/Silex
- https://github.com/jadephp/jade – slince 大神本人实现了 HTTP 内核
- https://github.com/laravel/framework
官网文档
源码链接
- https://github.com/guanguans/coole – 框架外围代码
- https://github.com/coolephp/skeleton – 框架利用模板