Version 2.3.0 - marmot-cn/marmot-framework GitHub Wiki
2.3
概述
- 更新
phpfpm
镜像. - 添加业务逻辑错误返回机制.
phpmd
检测.- 接口添加对来源的媒体协议进行判断.
- 修改
Subject.class.php
变量错误. - 对
Core.php
文件内路由不正确输出404
和405
进行处理. Core.php
文件对路由表进行缓存.jsonapi
添加fields
和include
筛选.- 优化仓库相关类文件减少构造函数传参.
commandBus
中控制事件的发布,不再每个handler中发布事件.- 为了统一命名修改接口文件
ResponseFormatterInterface.class.php
为IResponseFormatter.class.php
,需要修改System\Class\Response.class.php
. - 创建
public
目录, 并移动index.php
到该目录下. - 引入
null
对象和null
接口. - 环境隔离.
- 修改
Core.php
中的加载错误描述.
php-fpm 更新镜像为专用的后端镜像
- 升级
php
版本到7.1.9
- 添加更多的安全配置
Null
对象和Null
接口
引入具体可参见重构9.7
引入Null
对象的概述.
核心思想是用多态来解决原来的判断为null
的情况.
public
目录
创建对应的nginx
可以设定访问目录为该目录, 可以更好的设定安全策略.
添加业务逻辑错误反馈机制
根据json-api
媒体协议添加了错误返回码.
Subject.class.php
变量错误
修改_observers
修改为observers
.
phpmd
检查
添加- cleancode: 代码整洁规则
- 排除
static
检测
- 排除
- codesize: 代码尺寸规则
- controversial: 有争议的代码
- design: 软件设计的相关问题
- naming: 命名规则
- 排除
id
检测 - 最少字段名长度为
3
- 最长变量名为
30
- 排除
- unusedcode: 未使用代码的规则
composer.json
中phpmd/phpmd
版本升级为2.6.0
,解决不能识别匿名class问题.
接口添加对来源的媒体协议进行判断
如果请求媒体协议不是json-api
,则返回415
.
需要对接口请求确认添加Content-Type: application/vnd.api+json
.
Core.php
文件内路由不正确输出404
和405
进行处理
对现在是纯文本输出,修改为响应正常的状态吗.
原先
- 如果路由不存在返回文本的
404
. - 如果路由方法不支持返回文本的
405
Core.php
文件可以正常的判断DEBUG
模式和非DEBUG
模式
已经使用环境变量解决.
Core.php
文件对路由表进行缓存
对路由表进行缓存. 代替原先每次都需要解析一次的过程.
fields
和include
筛选
jsonapi添加include
代码库暂时未添加示例.该字段可以筛选额外的inlcude
属性.
示例
只查看用户的cellPhone字段
users/1?fields[users]=cellPhone
{
"meta": [],
"data": {
"type": "users",
"id": "1",
"attributes": {
"cellPhone": "15202939435"
},
"links": {
"self": "127.0.0.1\/users\/1"
}
}
}
优化仓库相关类文件减少构造函数传参
减少构造函数传参,通过自己内部声明,减少传递的参数.
notice
错误
优化解决null
对象和null
接口
引入引入null
对象和null
接口, 解耦代码, 避免判断null
. 可以参见重构一书,
环境隔离
通过环境变量隔离配置文件. 即config.?.php
中的?
通过在docker-compose.yml
配置环境变量来调用.
Core.php
中的加载错误描述
修改在调用lastError()
时, 把通用的错误描述和自定义错误描述通过array_merge
合并.