脚本运行时代:
- 缺点:
经由过程函数set_error_handler注册用户自定义缺点处理办法,然则set_error_handler不克不及处理以下级别缺点,E_ERROR、 E_PARSE、 E_CORE_ERROR、 E_CORE_WARNING、 E_COMPILE_ERROR、 E_COMPILE_WARNING,和在 调用 set_error_handler() 函数地点文件中产生的大年夜多半 E_STRICT。所以我们须要应用register_shutdown_function合营error_get_last获取脚本终止履行的最后缺点,目标是对于不合缺点级别和致命缺点进行自定义处理,例如返回友爱的提示的缺点信息。
[ file: framework/hanles/ErrorHandle.php ]
异常:
经由过程函数set_exception_handler注册未捕获异常处理办法,目标捕获未捕获的异常,例如返回友爱的提示和异常信息。
[ file: framework/hanles/ExceptionHandle.php ]
设备文件模块
加载框架自定义和用户自定义的设备文件。
[ file: framework/hanles/ConfigHandle.php ]
输入和输出
- 定义请求对象:包含所有的请求信息
- 定义响应对象:申明响应相干信息
框架中所有的异常输出和控制器输出都是json格局,因为我认为在前后端完全分别的今天,这是很友善的,今朝我们不须要再去推敲其余器械。
[ file: ./git-hooks/* ]
[ file: framework/Request.php ]
路由模块
不足的处所还有很多,如不雅大年夜家发清楚明了什愦问题,可以给我提 issue 或者PR。
经由过程用户拜访的url信息,经由过程路由规矩履行目标控制器类的的成员办法。我在这里把路由大年夜致分成了四类:
传统路由
- domain/index.php?module=Demo&contoller=Index&action=test&username=test
demo如下:
- domain/demo/index/modelExample
用户自定义路由
- // 定义在config/moduleName/route.php文件中,这个的this指向RouterHandle实例
- $this->get('v1/user/info', function (Framework\App $app) {
- return 'Hello Get Router';
- });
微单体路由
我在这里具体说下这里所谓的微单体路由,面向SOA和微办事架构大年夜行其道的今天,有很多的团队都在向办事化迈进,然则办事化过程中很多问题的复杂度都是指数级的增长,例如分布式的事务,办事安排,跨办事问题追踪等等。这导致对于小的团队大年夜单体架构走向办事架构不免艰苦重重,所以有人提出来了微单体架构,按照我的懂得就是在一个单体架构的SOA过程,我们把微办事中的的各个办事照样以模块的方法放在同一个单体中,比如:
- app
- ├── UserService [用户办事模块]
- ├── ContentService [内容办事模块]
- ├── OrderService [订单办事模块]
- ├── CartService [购物车办事模块]
- ├── PayService [付出办事模块]
- ├── GoodsService [商品办事模块]
- └── CustomService [客服办事模块]
如上,我们简单的在一个单体里构建了各个办事模块,然则这些模块怎么通信呢?如下:
- App::$app->get('demo/index/hello', [
- 'user' => 'TIGERB'
- ]);
经由过程膳绫擎的方法我们就可以松耦合的方法进行单体下各个模块的通信和依附了。与此同时,营业的成长是难以预估的,将来当我们向SOA的架构迁徙时,很简单,我们只须要把以往的模块自力成各个项目,然后把App实例get办法的实现改变为RPC或者REST的策略即可,我们可以经由过程设备文件去调剂对应的策略或者把本身的,第三方的实现注册进去即可。
[ file: framework/hanles/RouterHandle.php ]
传统的MVC模式倡导为MCL模式
传统的MVC模式包含model-view-controller层,绝大年夜多时刻我们会把营业逻辑写到controller层或model层,然则慢慢的我们会发明代码难以浏览、保护、扩大,所以我在这里强迫增长了一个logics层。至于,逻辑层里怎么写代码怎么,完全由你本身定义,你可以在琅绫擎实现一个对象类,你也可以在琅绫擎再新建子文件夹并在琅绫擎构建你的营业逻辑代码,你甚至可以实现一个基于义务连模式的网关(我会供给具体的示例)。如许看来,我们的最终构造是如许的:
推荐阅读
科技公司裁撤中年技巧员工的传闻,每隔一段时光就会在网上漫溢、发酵。法度榜样员们有点懵。十年前,当他们踏着高考重点登科线,走进大年夜学计算机院系的时刻,想象的而立生活必定不是如>>>详细阅读
本文标题:从0开始构建一个属于你自己的PHP框架
地址:http://www.17bianji.com/lsqh/35069.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示