Version 2.3.0 - marmot-cn/marmot-framework GitHub Wiki

2.3


概述


  • 更新phpfpm镜像.
  • 添加业务逻辑错误返回机制.
  • phpmd检测.
  • 接口添加对来源的媒体协议进行判断.
  • 修改Subject.class.php变量错误.
  • Core.php文件内路由不正确输出404405进行处理.
  • Core.php文件对路由表进行缓存.
  • jsonapi添加fieldsinclude筛选.
  • 优化仓库相关类文件减少构造函数传参.
  • commandBus 中控制事件的发布,不再每个handler中发布事件.
  • 为了统一命名修改接口文件ResponseFormatterInterface.class.phpIResponseFormatter.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.jsonphpmd/phpmd版本升级为2.6.0,解决不能识别匿名class问题.

接口添加对来源的媒体协议进行判断

如果请求媒体协议不是json-api,则返回415.

需要对接口请求确认添加Content-Type: application/vnd.api+json.

Core.php文件内路由不正确输出404405进行处理

现在是纯文本输出,修改为响应正常的状态吗.

原先

  • 如果路由不存在返回文本的404.
  • 如果路由方法不支持返回文本的405

Core.php文件可以正常的判断DEBUG模式和非DEBUG模式

已经使用环境变量解决.

Core.php文件对路由表进行缓存

对路由表进行缓存. 代替原先每次都需要解析一次的过程.

jsonapi添加fieldsinclude筛选

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合并.