大约两三年前,我萌生了写一个PHPweb框架的想法。期间也尝试过去实践开发,但总是因为种种原因没有完成。这次终于坚持下来,在百忙之中抽出时间来搭建自己的PHP微框架。来回零碎的开发了差不多一个月,直到今天写文档的时候才呈现给大家。除了框架本身的核心代码(Coole),还提供了一个框架应用(coolephp/skeleton)模板,并写了一个简单的文档,希望能给同样想写框架的小伙伴们带来一些参考(高手请无视)。生命周期客户端向入口脚本index.php发起请求。在入口脚本中创建应用,并向应用注册配置服务、核心服务和第三方服务。定义路由并将其加载到应用程序中。开始运行应用程序。创建请求对象。根据请求对象解析路由,创建控制器实例。动作调用模型数据,呈现给视图,并生成响应对象。管道过滤响应。向客户端返回响应。终止生命周期。命令行界面安装框架$composerrequireguanguans/coole-vvvQuickStartsetMiddleware(function(Request$request,Closure$next){printf('Beforerequest.
');$response=$next($request);printf('
Afterrequest.');return$response;});//3.监控并运行$app->run();componentguanguans/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-ORMtwig/twig-模板引擎vlucas/phpdotenv-envtightenco/collect-设置参数检查文章和参考框架https://symfony.com/doc/current/create_framework/index.html-推荐阅读https://github.com/slimphp/Slim-基本上所有内置组件都实现了PSR的接口规范,够规范https://github.com/silexphp/Silexhttps://github.com/jadephp/jade-slince神自己实现了HTTP内核https://github.com/laravel/framework官方文档https://www.guanguans.cn/coole源码链接https://github.com/guanguans/coole-框架核心代码https://github.com/coolephp/skeleton-框架应用模板
