- 版本更新记录
- v2.2.25 - 2022-01-30
- v2.2.24 - 2022-01-24
- v2.2.23 - 2022-01-17
- v2.2.22 - 2022-01-04
- v2.2.21 - 2021-12-20
- v2.2.20 - 2021-12-13
- v2.2.19 - 2021-12-06
- v2.2.18 - 2021-11-29
- v2.2.17 - 2021-11-22
- v2.2.16 - 2021-11-15
- v2.2.15 - 2021-11-08
- v2.2.14 - 2021-11-01
- v2.2.13 - 2021-10-25
- v2.2.12 - 2021-10-18
- v2.2.11 - 2021-10-11
- 优化
- v2.2.10 - 2021-09-26
- v2.2.9 - 2021-09-22
- 优化
- v2.2.8 - 2021-09-14
- v2.2.7 - 2021-09-06
- 修复
- v2.2.6 - 2021-08-30
- v2.2.5 - 2021-08-23
- v2.2.4 - 2021-08-16
- v2.2.3 - 2021-08-09
- v2.2.2 - 2021-08-03
- v2.2.1 - 2021-07-27
- v2.1.23 - 2021-07-12
- v2.1.22 - 2021-06-28
- v2.1.21 - 2021-06-21
- v2.1.20 - 2021-06-07
- v2.1.19 - 2021-05-31
- v2.1.18 - 2021-05-24
- v2.1.17 - 2021-05-17
- v2.1.16 - 2021-04-26
- v2.1.15 - 2021-04-19
- v2.1.14 - 2021-04-12
- v2.1.13 - 2021-04-06
- v2.1.12 - 2021-03-29
- v2.1.11 - 2021-03-22
- v2.1.10 - 2021-03-15
- v2.1.9 - 2021-03-08
- v2.1.8 - 2021-03-01
- v2.1.7 - 2021-02-22
- v2.1.6 - 2021-02-08
- v2.1.5 - 2021-02-01
- v2.1.4 - 2021-01-25
- v2.1.3 - 2021-01-18
- v2.1.2 - 2021-01-11
- v2.1.1 - 2021-01-04
- v2.1.0 - 2020-12-28
- v2.0.25 - 2020-12-28
- v2.0.24 - 2020-12-21
- v2.0.23 - 2020-12-14
- v2.0.22 - 2020-12-07
- v2.0.21 - 2020-11-30
- v2.0.20 - 2020-11-23
- v2.0.19 - 2020-11-17
- v2.0.18 - 2020-11-09
- v2.0.17 - 2020-11-02
- v2.0.16 - 2020-10-26
- v2.0.15 - 2020-10-19
- v2.0.14 - 2020-10-12
- v2.0.13 - 2020-09-28
- v2.0.12 - 2020-09-21
- v2.0.11 - 2020-09-14
- v2.0.10 - 2020-09-07
- v2.0.9 - 2020-08-31
- v2.0.8 - 2020-08-24
- v2.0.7 - 2020-08-17
- v2.0.6 - 2020-08-10
- v2.0.5 - 2020-08-03
- v2.0.4 - 2020-07-27
- v2.0.3 - 2020-07-20
- v2.0.2 - 2020-07-13
- v2.0.1 - 2020-07-02
- v2.0 - 2020-06-22
- v1.1.32 - 2020-05-21
- v1.1.31 - 2020-05-14
- v1.1.30 - 2020-05-07
- v1.1.28 - 2020-04-30
- v1.1.27 - 2020-04-23
- v1.1.26 - 2020-04-16
- v1.1.25 - 2020-04-09
- v1.1.24 - 2020-04-09
- v1.1.23 - 2020-04-02
- v1.1.22 - 2020-03-26
- v1.1.21 - 2020-03-19
- v1.1.20 - 2020-03-12
- v1.1.19 - 2020-03-05
- v1.1.18 - 2020-02-27
- v1.1.17 - 2020-01-24
- v1.1.16 - 2020-01-16
- v1.1.15 - 2020-01-10
- v1.1.14 - 2020-01-10
- v1.1.13 - 2020-01-03
- v1.1.12 - 2019-12-26
- v1.1.11 - 2019-12-19
- v1.1.10 - 2019-12-12
- v1.1.9 - 2019-12-05
- v1.1.8 - 2019-11-28
- v1.1.7 - 2019-11-21
- v1.1.6 - 2019-11-14
- v1.1.5 - 2019-11-07
- v1.1.4 - 2019-10-31
- v1.1.3 - 2019-10-24
- v1.1.2 - 2019-10-17
- v1.1.1 - 2019-10-08
- v1.1.0 - 2019-10-08
- v1.0.16 - 2019-09-20
- v1.0.15 - 2019-09-11
- v1.0.14 - 2019-09-05
- v1.0.13 - 2019-08-28
- v1.0.12 - 2019-08-21
- v1.0.11 - 2019-08-15
- v1.0.10 - 2019-08-09
- v1.0.9 - 2019-08-03
- v1.0.8 - 2019-07-31
- v1.0.7 - 2019-07-26
- v1.0.6 - 2019-07-24
- v1.0.5 - 2019-07-17
- 变更
- v1.0.4 - 2019-07-08
- v1.0.3 - 2019-07-02
- v1.0.2 - 2019-06-25
版本更新记录
v2.2.25 - 2022-01-30
修复
- #4484 修复使用
Nacos v2.0.4版本时,服务是否注册过,判断有误的问题。
新增
- #4477 为
Hyperf\HttpServer\Request新增Macroable支持。
优化
- #4254 当使用
Hyperf\Di\ScanHandlerPcntlScanHandler时,增加grpc.enable_fork_support检测。
v2.2.24 - 2022-01-24
修复
- #4474 修复使用多路复用 RPC 时,导致测试脚本无法正常停止的问题。
优化
- #4451 优化了
Hyperf\Watcher\Driver\FindNewerDriver的代码。
v2.2.23 - 2022-01-17
修复
- #4426 修复
view-engine模板引擎,在并发请求下导致模板缓存生成错误的问题。
新增
- #4449 为
Hyperf\Utils\Collection增加多条件排序的能力。 - #4455 新增命令
gen:view-engine-cache可以预生成模板缓存,避免并发带来的一系列问题。 - #4453 新增
Hyperf\Tracer\Aspect\ElasticserachAspect,用来记录elasticsearch客户端的调用记录。 - #4458 新增
Hyperf\Di\ScanHandler\ProcScanHandler,用来支持Windows+Swow环境下启动服务。
v2.2.22 - 2022-01-04
修复
- #4399 修复使用
RedisCluster时,无法使用scan方法的问题。
新增
- #4409 为
session增加数据库支持。 - #4411 为
tracer组件,新增Hyperf\Tracer\Aspect\DbAspect,用于记录hyperf/db组件产生的SQL日志。 - #4420 为
Hyperf\Amqp\IO\SwooleIO增加SSL支持。
优化
- #4406 删除
Swoole PSR-0风格代码,更加友好的支持Swoole 5.0版本。 - #4429 为
Debug::getRefCount()方法增加类型检测,只能用于输出对象的RefCount。
v2.2.21 - 2021-12-20
修复
- #4347 修复使用
AMQP组件时,如果连接缓冲区溢出,会导致连接被绑定到多个协程从而报错的问题。 - #4373 修复使用
Snowflake组件时,由于getWorkerId()中存在IO操作进而导致协程切换,最终导致元数据生成重复的问题。
新增
- #4344 新增事件
Hyperf\Crontab\Event\FailToExecute,此事件会在Crontab任务执行失败时触发。 - #4348 支持使用
gen:*命令创建文件时,自动吊起对应的IDE,并打开当前文件。
优化
- #4350 优化了未开启
swoole.use_shortname时的错误信息。 - #4360 将
Hyperf\Amqp\IO\SwooleIO进行重构,使用更加稳定和高效的Swoole\Coroutine\Socket而非Swoole\Coroutine\Client。
v2.2.20 - 2021-12-13
修复
新增
v2.2.19 - 2021-12-06
修复
- #4308 修复执行
server:watch时,因为使用相对路径导致collector-reload文件找不到的问题。
优化
- #4317 为
Hyperf\Utils\Collection和Hyperf\Database\Model\Collection增强类型提示功能。
v2.2.18 - 2021-11-29
修复
- #4283 修复当
GRPC结果为null时,Hyperf\Grpc\Parser::deserializeMessage()报错的问题。
新增
- #4284 新增方法
Hyperf\Utils\Network::ip()获取本地IP。 - #4290 为
HTTP服务增加chunk功能。 - #4291 为
value()方法增加动态参数功能。 - #4293 为
server:watch命令增加相对路径支持。 - #4295 为
Hyperf\Database\Schema\Blueprint::bigIncrements()增加别名id()。
v2.2.17 - 2021-11-22
修复
- #4243 修复使用
parallel时,结果集的顺序与入参不一致的问题。
新增
v2.2.16 - 2021-11-15
新增
- #4252 为
Hyperf\RpcClient\AbstractServiceClient新增getServiceName()方法。
优化
- #4253 在扫描阶段时,如果类库找不到,则跳过且报出警告。
v2.2.15 - 2021-11-08
修复
- #4200 修复当
runtime/caches不是目录时,使用文件缓存失败的问题。
新增
- #4157 为
Hyperf\Utils\Arr增加Macroable支持。
v2.2.14 - 2021-11-01
新增
修复
v2.2.13 - 2021-10-25
新增
- #4159 为
Macroable::mixin方法增加参数$replace,当其设置为false时,会优先判断是否已经存在。
修复
- #4158 修复因为使用了
Union类型,导致生成代理类失败的问题。
优化
v2.2.12 - 2021-10-18
新增
- #4129 新增方法
Str::stripTags()和Stringable::stripTags()。
修复
v2.2.11 - 2021-10-11
修复
- #4101 修复 Nacos 使用的密码携带特殊字符时,密码会被
urlencode导致密码错误的问题。
优化
v2.2.10 - 2021-09-26
修复
v2.2.9 - 2021-09-22
修复
- #4061 修复
hyperf/metric组件与最新版本的prometheus_client_php存在冲突的问题。 - #4068 修复命令行抛出错误时,退出码与实际不符的问题。
- #4076 修复
HTTP服务因返回数据不是标准HTTP协议时,导致服务宕机的问题。
新增
- #4014 #4080 为
kafka组件增加sasl和ssl的支持。 - #4045 #4082 为
tracer组件新增配置opentracing.enable.exception,用来判断是否收集异常信息。 - #4086 支持收集接口
Interface的注解信息。
优化
- #4084 优化了注解找不到时的错误信息。
v2.2.8 - 2021-09-14
修复
- #4028 修复
grafana面板中,请求数结果计算错误的问题。 - #4030 修复异步队列会因为解压缩模型失败,导致进程中断随后重启的问题。
- #4042 修复因
SocketIO服务关闭时清理过期的fd,进而导致协程死锁的问题。
新增
- #4013 为
Cookies增加sameSite=None的支持。 - #4017 为
Hyperf\Utils\Collection增加Macroable。 - #4021 为
retry()方法中$callback匿名函数增加$attempts变量。 - #4040 为
AMQP组件新增方法ConsumerDelayedMessageTrait::getDeadLetterExchange(),可以用来重写x-dead-letter-exchange参数。
移除
- #4017 从
Hyperf\Database\Model\Collection中移除Macroable,因为它的基类Hyperf\Utils\Collection已引入了对应的Macroable。
v2.2.7 - 2021-09-06
修复
优化
- #4009 优化方法
MethodDefinitionCollector::getOrParse(),避免在 PHP8 环境下,触发即将废弃的错误。
新增
v2.2.6 - 2021-08-30
修复
- #3969 修复 PHP8 环境下使用
Hyperf\Validation\Rules\Unique::__toString()导致类型错误的问题。 - #3979 修复熔断器组件,
timeout变量无法使用的问题。 - #3986 修复文件系统组件,开启
SWOOLE_HOOK_NATIVE_CURL后导致 OSS hook 失败的问题。
新增
v2.2.5 - 2021-08-23
修复
新增
- code-generator 新增组件
code-generator,可以用来将Doctrine注解转化为PHP8的原生注解。
优化
- #3957 使用命令
gen:model生成getAttribute注释时,支持基于@return注释返回对应的类型。
v2.2.4 - 2021-08-16
修复
新增
- #3924 为
Consul服务注册中心增加配置项services.drivers.consul.check。 - #3932 为
AMQP消费者增加重新入队列的配置,允许用户返回NACK后,消息重入队列。 - #3941 允许多路复用的
RPC组件使用注册中心的能力。 - #3947 新增方法
Str::mask,允许用户对一段文本某段内容打马赛克。
优化
- #3944 封装了读取
Aspect元数据的方法。
v2.2.3 - 2021-08-09
修复
- #3897 修复因为
lightBeatEnabled导致心跳失败,进而导致Nacos服务注册多次的问题。 - #3905 修复
AMQP连接在关闭时导致空指针的问题。 - #3906 修复
AMQP连接关闭时,因已经销毁所有等待通道而导致失败的问题。 - #3908 修复使用了以
CoordinatorManager为基础的循环逻辑时,自定义进程无法正常重启的问题。
v2.2.2 - 2021-08-03
修复
- #3872 #3873 修复使用
Nacos服务时,因为没有使用默认的组名,导致心跳失败的问题。 - #3877 修复
Nacos服务,心跳会被注册多次的问题。 - #3879 修复热更新因为代理类被覆盖,导致无法正常使用的问题。
优化
- #3877 为
Nacos服务,增加lightBeatEnabled支持。
v2.2.1 - 2021-07-27
修复
- #3750 修复使用
SocketIO时,由于触发了一个不存在的命名空间,而导致致命错误的问题。 - #3828 修复在
PHP 8.0版本中,无法对Hyperf\Redis\Redis使用懒加载注入的问题。 - #3845 修复
watcher组件无法在v2.2版本中正常使用的问题。 - #3848 修复
Nacos组件无法像v2.1版本注册自身到Nacos服务中的问题。 - #3866 修复
Nacos实例无法正常注册元数据的问题。
优化
- #3763 使
JsonResource::wrap()和JsonResource::withoutWrapping()支持链式调用。 - #3843 在
Nacos注册服务时,根据HTTP响应的返回码和数据协同判断,以确保是否已注册过。 - #3854 为文件下载方法支持
RFC 5987,它允许使用UTF-8格式和URL格式化。
v2.1.23 - 2021-07-12
优化
- #3787 优化
JSON RPC服务,优先初始化PSR Response,用于避免PSR Request初始化失败后,无法从上下文中获取Response的问题。
v2.1.22 - 2021-06-28
安全性更新
修复
- #3721 修复了验证器规则
in和not in判断有误的问题,例如规则为in:00时,0不应该被允许通过。
v2.1.21 - 2021-06-21
修复
- #3684 修复使用熔断器时,成功次数和失败次数的界限判断有误的问题。
v2.1.20 - 2021-06-07
修复
- #3667 修复形如
10-12/1,14-15/1的定时任务规则无法正常使用的问题。 - #3669 修复了没有反斜线形如
10-12的定时任务规则无法正常使用的问题。 - #3674 修复
@Task注解中,参数$workerId无法正常使用的问题。
优化
- #3663 优化
AbstractServiceClient::getNodesFromConsul()方法,排除了可能找不到端口的隐患。 - #3668 优化
Guzzle组件中CoroutineHandler代理相关的代码,增强其兼容性。
v2.1.19 - 2021-05-31
修复
- #3618 修复使用了相同路径但不同实现逻辑的路由会在命令
describe:routes中,被合并成一条的问题。 - #3625 修复
Hyperf\Di\Annotation\Scanner中无法正常使用class_map功能的问题。
新增
- #3626 为
RPC组件增加了新的路径打包器Hyperf\Rpc\PathGenerator\DotPathGenerator。
新组件孵化
- nacos-sdk 基于 Nacos Open API 实现的 SDK。
v2.1.18 - 2021-05-24
修复
- #3598 修复事务回滚时,模型累加、累减操作会导致模型缓存产生脏数据的问题。
- #3607 修复在使用协程风格的
WebSocket服务时,onOpen事件无法在事件结束后销毁协程的问题。 - #3610 修复数据库存在前缀时,
fromSub()和joinSub()无法正常使用的问题。
v2.1.17 - 2021-05-17
修复
- #3856 修复
Swow服务处理keepalive的请求时,协程无法在每个请求后结束的问题。
新增
- #3329
@Crontab注解的enable参数增加支持设置数组, 你可以通过它动态的控制定时任务是否启动。
v2.1.16 - 2021-04-26
修复
- #3510 修复
consul无法将节点强制离线的问题。 - #3513 修复
Nats因为Socket超时时间小于最大闲置时间,导致连接意外关闭的问题。 - #3520 修复
@Inject无法作用于嵌套Trait的问题。
新增
- #3514 新增方法
Hyperf\HttpServer\Request::clearStoredParsedData()。
优化
- #3517 优化
Hyperf\Di\Aop\PropertyHandlerTrait。
v2.1.15 - 2021-04-19
新增
- #3484 新增
ORM方法withMax()withMin()withSum()和withAvg().
v2.1.14 - 2021-04-12
修复
新增
- #3472 新增方法
Sender::getResponse(),可以在协程风格的WebSocket服务里,获得与fd一一对应的Response对象。
v2.1.13 - 2021-04-06
修复
- #3432 修复
SocketIO服务,定时清理失效fd的功能无法作用到其他worker进程的问题。 - #3434 修复
RPC结果不支持允许为null的类型,例如?array会被强制转化为数组。 - #3447 修复模型缓存中,因为存在表前缀,导致模型默认值无法生效的问题。
- #3450 修复注解
@Crontab无法作用于方法的问题,支持一个类中,配置多个@Crontab。
优化
- #3453 优化了类
Hyperf\Utils\Channel\Caller回收实例时的机制,防止因为实例为null时,导致无法正确回收的问题。 - #3455 优化脚本
phar:build,支持使用软连接方式加载的组件包。
v2.1.12 - 2021-03-29
修复
优化
- #3422 优化了
co-phpunit的代码。
v2.1.11 - 2021-03-22
新增
- #3376 为注解
Hyperf\DbConnection\Annotation\Transactional增加参数$connection和$attempts,用户可以按需设置事务连接和重试次数。 - #3403 新增方法
Hyperf\Testing\Client::sendRequest(),用户可以使用自己构造的ServerRequest,比如设置Cookies。
修复
- #3380 修复超全局变量,在协程上下文里没有
Request对象时,无法正常工作的问题。 - #3394 修复使用
@Inject注入的对象,会被trait中注入的对象覆盖的问题。 - #3395 修复当继承使用
@Inject注入私有变量的父类时,而导致子类实例化报错的问题。 - #3398 修复单元测试中使用
UploadedFile::isValid()时,无法正确判断结果的问题。
v2.1.10 - 2021-03-15
修复
- #3348 修复当使用
Arr::forget方法在key为integer且不存在时,执行报错的问题。 - #3351 修复
hyperf/validation组件中,FormRequest无法从协程上下文中获取到修改后的ServerRequest,从而导致验证器验证失败的问题。 - #3356 修复
hyperf/testing组件中,客户端Hyperf\Testing\Client无法模拟构造正常的UriInterface的问题。 - #3363 修复在入口文件
bin/hyperf.php中自定义的常量,无法在命令server:watch中使用的问题。 - #3365 修复当使用协程风格服务时,如果用户没有配置
pid_file,仍然会意外生成runtime/hyperf.pid文件的问题。
优化
- #3364 优化命令
phar:build,你可以在不使用php脚本的情况下执行phar文件,就像使用命令./composer.phar而非php composer.phar。 - #3367 优化使用
gen:model生成模型字段的类型注释时,尽量读取自定义转换器转换后的对象类型。
v2.1.9 - 2021-03-08
修复
新增
- #3325 为
Crontab注解增加enable参数,用于控制当前任务是否注册到定时任务中。
优化
- #3338 优化了
testing组件,使模拟请求的方法运行在独立的协程当中,避免协程变量污染。
v2.1.8 - 2021-03-01
修复
- #3301 修复
hyperf/cache组件,当没有在注解中设置超时时间时,会将超时时间强制转化为 0,导致缓存不失效的问题。
新增
- #3310 新增方法
Blueprint::comment(),可以允许在使用Migration的时候,设置表注释。 - #3311 新增方法
RouteCollector::getRouteParser,可以方便的从RouteCollector中获取到RouteParser对象。 - #3316 允许用户在
hyperf/db组件中,注册自定义数据库适配器。
优化
新组件孵化
- rpc-multiplex 基于 Channel 实现的多路复用 RPC 组件。
- db-pgsql 适配于
hyperf/db的PgSQL适配器。
v2.1.7 - 2021-02-22
修复
- #3272 修复使用
doctrine/dbal修改数据库字段名报错的问题。
新增
- #3261 新增方法
Pipeline::handleCarry,可以方便处理返回值。 - #3267 新增
Hyperf\Utils\Reflection\ClassInvoker,用于执行非公共方法和读取非公共变量。 - #3268 为
kafka消费者新增订阅多个主题的能力。 - #3193 #3296 为
phar:build新增选项-M,可以用来映射外部的文件或目录到Phar包中。
变更
v2.1.6 - 2021-02-08
修复
- #3233 修复
AMQP组件,因连接服务端失败,导致连接池耗尽的问题。 - #3245 修复
hyperf/kafka组件设置autoCommit为false无效的问题。 - #3255 修复
Nsq消费者进程,无法触发defer方法的问题。
优化
- #3249 优化
hyperf/kafka组件,可以重用连接进行消息发布。
移除
- #3235 移除
hyperf/kafka组件rebalance检查,因为底层库longlang/phpkafka增加了对应的检查。
v2.1.5 - 2021-02-01
修复
- #3204 修复在
hyperf/rpc-server组件中,中间件会被意外替换的问题。 - #3209 修复
hyperf/amqp组件在使用协程风格服务,且因超时意外报错时,没有办法正常回收到连接池的问题。 - #3222 修复
hyperf/database组件中JOIN查询会导致内存泄露的问题。 - #3228 修复
hyperf/tracer组件中,在defer中调用flush失败时,会导致进程异常退出的问题。 - #3230 修复
hyperf/scout组件中orderBy方法无效的问题。
新增
- #3211 为
hyperf/nacos组件添加了新的配置项url,用于访问Nacos服务。 - #3214 新增类
Hyperf\Utils\Channel\Caller,可以允许用户使用协程安全的连接,避免连接被多个协程绑定,导致报错的问题。 - #3224 新增方法
Hyperf\Utils\CodeGen\Package::getPrettyVersion(),允许用户获取组件的版本。
变更
- #3218 默认为
AMQP配置QOS参数,prefetch_count为1,global为false,prefetch_size为0。 - #3224 为组件
jean85/pretty-package-versions升级版本到^1.2|^2.0, 支持Composer 2.x。
如果使用 composer 2.x,则需要安装 jean85/pretty-package-versions 的 ^2.0 版本,反之安装 ^1.2 版本
优化
- #3226 优化
hyperf/database组件,使用group by或having时执行子查询获得总数。
v2.1.4 - 2021-01-25
修复
- #3165 修复方法
Hyperf\Database\Schema\MySqlBuilder::getColumnListing在MySQL 8.0版本中无法正常使用的问题。 - #3174 修复
hyperf/database组件中where语句因为不严谨的代码编写,导致被绑定参数会被恶意替换的问题。 - #3179 修复
json-rpc客户端因对端服务重启,导致接收数据一直异常的问题。 - #3189 修复
kafka在集群模式下无法正常使用的问题。 - #3191 修复
json-rpc客户端因对端服务重启,导致连接池中的连接全部失效,新的请求进来时,首次使用皆会报错的问题。
新增
- #3170 为
hyperf/watcher组件新增了更加友好的驱动器FindNewerDriver,支持MacLinux和Docker。 - #3195 为
JsonRpcPoolTransporter新增了重试机制, 当连接、发包、收包失败时,默认重试 2 次,收包超时不进行重试。
优化
- #3169 优化了
ErrorExceptionHandler中与set_error_handler相关的入参代码, 解决静态检测因入参不匹配导致报错的问题。 - #3191 优化了
hyperf/json-rpc组件, 当连接中断后,会先尝试重连。
变更
- #3174 严格检查
hyperf/database组件中where语句绑定参数。
新组件孵化
v2.1.3 - 2021-01-18
修复
- #3070 修复
tracer组件无法正常使用的问题。 - #3106 修复协程从已被销毁的协程中复制协程上下文时导致报错的问题。
- #3108 修复使用
describe:routes命令时,相同callback不同路由组的路由会被替换覆盖的问题。 - #3118 修复
migrations配置名位置错误的问题。 - #3126 修复
Swoole扩展v4.6版本中,SWOOLE_HOOK_SOCKETS与jaeger冲突的问题。 - #3137 修复
database组件,当没有主动设置PDO::ATTR_PERSISTENT为true时,导致的类型错误。 - #3141 修复使用
Migration时,doctrine/dbal无法正常工作的问题。
新增
v2.1.2 - 2021-01-11
修复
- #3050 修复在
increment()后使用save()时,导致extra数据被保存两次的问题。 - #3082 修复
hyperf/db组件在defer中使用时,会导致连接被其他协程绑定的问题。 - #3084 修复
phar打包后getRealPath无法正常工作的问题。 - #3087 修复使用
AOP时,pipeline导致内存泄露的问题。 - #3095 修复
hyperf/scout组件中,ElasticsearchEngine::getTotalCount()无法兼容Elasticsearch 7.0版本的问题。
新增
优化
- #3046 打包
phar时,优化了重写scan_cacheable的代码。
变更
- #3077 因组件
league/flysystem的2.0版本无法兼容,故降级到^1.0。
v2.1.1 - 2021-01-04
修复
- #3045 修复
database组件,当没有主动设置PDO::ATTR_PERSISTENT为true时,导致的类型错误。 - #3047 修复
socketio-server组件,为sid续约时报错的问题。 - #3062 修复
grpc-server组件,入参无法被正确解析的问题。
新增
- #3052 为
metric组件,新增了收集命令行指标的功能。 - #3054 为
socketio-server组件,新增了Engine::close协议支持,并在调用方法getRequest失败时,抛出连接已被关闭的异常。
v2.1.0 - 2020-12-28
依赖升级
- 升级
php版本到>=7.3。 - 升级组件
phpunit/phpunit版本到^9.0。 - 升级组件
guzzlehttp/guzzle版本到^6.0|^7.0。 - 升级组件
vlucas/phpdotenv版本到^5.0。 - 升级组件
endclothing/prometheus_client_php版本到^1.0。 - 升级组件
twig/twig版本到^3.0。 - 升级组件
jcchavezs/zipkin-opentracing版本到^0.2.0。 - 升级组件
doctrine/dbal版本到^3.0。 - 升级组件
league/flysystem版本到^1.0|^2.0。
移除
- 移除
Hyperf\Amqp\Builder已弃用的成员变量$name。 - 移除
Hyperf\Amqp\Message\ConsumerMessageInterface已弃用的方法consume()。 - 移除
Hyperf\AsyncQueue\Driver\Driver已弃用的成员变量$running。 - 移除
Hyperf\HttpServer\CoreMiddleware已弃用的方法parseParameters()。 - 移除
Hyperf\Utils\Coordinator\Constants已弃用的常量ON_WORKER_START和ON_WORKER_EXIT。 - 移除
Hyperf\Utils\Coordinator已弃用的方法get()。 - 移除配置文件
rate-limit.php, 请使用rate_limit.php。 - 移除无用的类
Hyperf\Resource\Response\ResponseEmitter。 - 将组件
hyperf/paginator从hyperf/database依赖中移除。 - 移除
Hyperf\Utils\Coroutine\Concurrent中的方法stats()。
变更
方法
Hyperf\Utils\Coroutine::parentId返回父协程的协程 ID- 如果在主协程中,则会返回 0。
- 如果在非协程环境中使用,则会抛出
RunningInNonCoroutineException异常。 - 如果协程环境已被销毁,则会抛出
CoroutineDestroyedException异常。
类
Hyperf\Guzzle\CoroutineHandler- 删除了
execute()方法。 - 方法
initHeaders()将会返回初始化好的 Header 列表, 而不是直接将$headers赋值到客户端中。 - 删除了
checkStatusCode()方法。
- 删除了
#2720 不再在方法
PDOStatement::bindValue()中设置data_type,已避免字符串索引中使用整形时,导致索引无法被命中的问题。- #2871 从
StreamInterface中获取数据时,使用(string) $body而不是$body->getContents(),因为方法getContents()只会返回剩余的数据,而非全部数据。 - #2909 允许设置重复的中间件。
- #2935 修改了
Exception Formatter的默认规则。 - #2979 命令行
gen:model不再自动将decimal格式转化为float。
即将废弃
- 类
Hyperf\AsyncQueue\Signal\DriverStopHandler将会在v2.2版本中弃用, 请使用Hyperf\Process\Handler\ProcessStopHandler代替。 - 类
Hyperf\Server\SwooleEvent将会在v3.0版本中弃用, 请使用Hyperf\Server\Event代替。
新增
- #2659 #2663 新增了 Swow 驱动支持。
- #2671 新增监听器
Hyperf\AsyncQueue\Listener\QueueHandleListener,用来记录异步队列的运行日志。 - #2923 新增类
Hyperf\Utils\Waiter,可以用来等待一个协程结束。 - #3001 新增方法
Hyperf\Database\Model\Collection::columns(),类似于array_column。 - #3002 为
Json::decode和Json::encode新增参数$depth和$flags。
修复
- #2741 修复自定义进程无法在
Swow驱动下使用的问题。
优化
- #3009 优化了
prometheus,使其支持https和http协议。
v2.0.25 - 2020-12-28
新增
- #3015 为
socketio-server增加了可以自动清理垃圾的机制。 - #3030 新增了方法
ProceedingJoinPoint::getInstance(),可以允许在使用AOP时,拿到被切入的实例。
优化
- #3011 优化
hyperf/tracer组件,可以在链路追踪中记录异常信息。
v2.0.24 - 2020-12-21
修复
- #2978 修复当没有引用
hyperf/contract时,hyperf/snowflake组件会无法正常使用的问题。 - #2983 修复使用协程风格服务时,常量
SWOOLE_HOOK_FLAGS无法生效的问题。 - #2993 修复方法
Arr::merge()入参$array1为空时,会将关联数组,错误的转化为索引数组的问题。
优化
v2.0.23 - 2020-12-14
新增
- #2872 新增
hyperf/phar组件,用于将Hyperf项目打包成phar。
修复
- #2952 修复
Nacos配置中心,在协程风格服务中无法正常使用的问题。
变更
优化
- #2951 优化
model-cache组件,使其执行完多次事务后,只会删除一次缓存。 - #2953 隐藏命令行因执行
exit导致的异常Swoole\ExitException。 - #2963 当异步风格服务使用
SWOOLE_BASE时,会从默认的事件回调中移除onStart事件。
v2.0.22 - 2020-12-07
新增
修复
- #2913 修复使用
ORM中的with预加载逻辑时,会因循环依赖导致内存泄露的问题。 - #2915 修复
WebSocket工作进程会因onMessageoronClose回调失败,导致进程退出的问题。 - #2927 修复验证器规则
alpha_dash不支持int的问题。
变更
优化
- #2931 判断控制器方法是否存在时,使用实际从容器中得到的对象,而非命名空间。
v2.0.21 - 2020-11-30
新增
- #2857 为
service-governance组件新增Consul的ACL Token支持。 - #2870 为脚本
vendor:publish支持发布配置目录的能力。 - #2875 为
watcher组件新增可选项no-restart,允许动态修改注解缓存,但不重启服务。 - #2883 为
scout组件数据导入脚本,增加可选项--chunk和--column|c,允许用户指定任一字段,进行数据插入,解决偏移量过大导致查询效率慢的问题。 - #2891 为
crontab组件新增可用于发布的配置文件。
修复
变更
- #2851 修改
view组件默认的配置文件,使用view-engine引擎,而非第三方blade引擎。
优化
- #2785 优化
watcher组件,使其异常信息更加人性化。 - #2861 优化
Guzzle Coroutine Handler,当其statusCode小于0时,抛出对应异常。 - #2868 优化
Guzzle的sink配置,使其支持传入resource。
v2.0.20 - 2020-11-23
新增
- #2824 为
Hyperf\Database\Query\Builder增加方法simplePaginate()。
修复
- #2820 修复使用
fanout交换机时,AMQP消费者无法正常工作的问题。 - #2831 修复
AMQP连接会被客户端意外关闭的问题。 - #2848 修复在
defer中使用数据库组件时,会导致数据库连接会同时被其他协程绑定的问题。
变更
- #2824 修改
Hyperf\Database\Query\Builder方法paginate()返回值类型,由PaginatorInterface变更为LengthAwarePaginatorInterface。
优化
- #2766 优化
Tracer组件,在抛出异常的情况下,也可以执行finish方法,记录链路。 - #2805 优化
Nacos进程,可以安全停止。 - #2821 优化工具类
Json和Xml,使其抛出一致的异常。 - #2827 优化
Hyperf\Server\ServerConfig,解决方法__set因返回值不为void,导致不兼容PHP8的问题。 - #2839 优化
Hyperf\Database\Schema\ColumnDefinition的注释。
v2.0.19 - 2020-11-17
新增
修复
- #2783 修复
NSQ消费者无法在协程风格下正常使用的问题。 - #2788 修复非静态方法
__handlePropertyHandler()在代理类中,被静态调用的问题。 - #2790 修复
ETCD配置中心,BootProcessListener监听器无法在协程风格下正常使用的问题。 - #2803 修复当
Request无法实例化时,HTTP响应数据被清除的问题。 - #2807 修复当存在重复的中间件时,中间件的表现会与预期不符的问题。
优化
- #2750 优化
Scout组件,当没有配置搜索引擎index或Elasticsearch版本高于7.0时,使用index而非type作为模型的搜索条件。
v2.0.18 - 2020-11-09
新增
- #2752 为注解
@AutoController@Controller和@Mapping添加options参数,用于设置路由元数据。
修复
- #2768 修复
WebSocket握手失败时导致内存泄露的问题。 - #2777 修复低版本
redis扩展,RedisCluster构造函数$auth不支持null,导致报错的问题。 - #2779 修复因没有设置
translation配置文件导致服务启动失败的问题。
变更
- #2765 变更
Concurrent类中创建协程逻辑,由方法Hyperf\Utils\Coroutine::create()代替原来的Swoole\Coroutine::create()。
优化
- #2347 为
AMQP的ConsumerMessage增加参数$waitTimeout,用于在协程风格服务中,安全停止服务。
v2.0.17 - 2020-11-02
新增
- #2625 新增
Hyperf\Tracer\Aspect\JsonRpcAspect, 可以让Tracer组件支持JsonRPC的链路追踪。 - #2709 #2733 为
Model新增了对应的@mixin注释,提升模型的静态方法提示能力。 - #2726 #2733 为
gen:model脚本增加可选项--with-ide, 可以生成对应的IDE文件。 - #2737 新增 view-engine 组件,可以不需要在
Task进程中渲染页面。
修复
- #2719 修复
Arr::merge会因array1中不包含array2中存在的$key时,导致的报错问题。 - #2723 修复
Paginator::resolveCurrentPath无法正常工作的问题。
优化
- #2746 优化
@Task注解,只会在worker进程中执行时,会投递到task进程执行对应逻辑,其他进程则会降级为同步执行。
变更
- #2728
JsonRPC中,以__为前缀的方法,都不会在注册到RPC服务中,例如__construct, ‘__call’。
v2.0.16 - 2020-10-26
新增
修复
- #2680 修复
CastsValue因为没有设置$isSynchronized默认值,导致的类型错误。 - #2680 修复
CastsValue中$items默认值会被__construct覆盖的问题。 - #2693 修复
hyperf/retry组件,Budget表现不符合期望的问题。 - #2695 修复方法
Container::define()因为容器中的对象已被实例化,而无法重定义的问题。
优化
- #2611 优化
hyperf/watcher组件FindDriver,使其可以在Alpine镜像中使用。 - #2662 优化
Amqp消费者进程,使其可以配合Signal组件安全停止。 - #2690 优化
hyperf/tracer组件,确保其可以正常执行finish和flush方法。
v2.0.15 - 2020-10-19
新增
- #2654 新增方法
Hyperf\Utils\Resource::from,可以方便的将string转化为resource。
修复
- #2634 #2640 修复
snowflake组件中,元数据生成器RedisSecondMetaGenerator会产生相同元数据的问题。 - #2639 修复
json-rpc组件中,异常无法正常被序列化的问题。 - #2643 修复
scout:flush执行失败的问题。
优化
- #2656 优化了
json-rpc组件中,参数解析失败后,也可以返回对应的错误信息。
v2.0.14 - 2020-10-12
新增
- #1172 新增基于
laravel/scout实现的组件hyperf/scout, 可以通过搜索引擎进行模型查询。 - #1868 新增
Redis组件的哨兵模式。 - #1969 新增组件
hyperf/resourceandhyperf/resource-grpc,可以更加方便的将模型转化为 Response。
修复
- #2594 修复
hyperf/crontab组件因为无法正常响应hyperf/signal,导致无法停止的问题。 - #2601 修复命令
gen:model因为getter和setter同时存在时,注释@property会被@property-read覆盖的问题。 - #2607 #2637 修复使用
RetryAnnotationAspect时,会有一定程度内存泄露的问题。 - #2624 修复组件
hyperf/testing因使用了guzzle 7.0和CURL HOOK导致无法正常工作的问题。 - #2632 #2635 修复
hyperf\redis组件集群模式,无法设置密码的问题。
优化
- #2603 允许
hyperf/database组件,whereNull方法接受array作为入参。
v2.0.13 - 2020-09-28
新增
- #2445 当使用异常捕获器
WhoopsExceptionHandler返回JSON格式化的数据时,自动添加异常的Trace信息。 - #2580 新增
grpc-client组件的metadata支持。
修复
- #2559 修复使用
socket-io连接socketio-server时,因为携带query信息,导致事件无法被触发的问题。 - #2565 修复生成代理类时,因为存在匿名类,导致代理类在没有父类的情况下使用了
parent::class而报错的问题。 - #2578 修复当自定义进程抛错后,事件
AfterProcessHandle无法被触发的问题。 - #2582 修复使用
Redis::multi且在defer中使用了其他Redis指令后,导致Redis同时被两个协程使用而报错的问题。 - #2589 修复使用了协程风格服务时,
AMQP消费者无法正常启动的问题。 - #2590 修复使用了协程风格服务时,
Crontab无法正常工作的问题。
优化
v2.0.12 - 2020-09-21
新增
- #2512 为 hyperf/database 组件方法
MySqlGrammar::compileColumnListing新增返回字段column_type。
修复
- #2490 修复 hyperf/grpc-client 组件中,流式客户端无法正常工作的问题。
- #2509 修复 hyperf/database 组件中,使用小驼峰模式后,访问器无法正常工作的问题。
- #2535 修复 hyperf/database 组件中,使用
gen:model后,通过访问器生成的注释@property会被morphTo覆盖的问题。 - #2546 修复 hyperf/db-connection 组件中,使用
left join等复杂查询后,MySQL连接无法正常释放的问题。
优化
- #2490 优化 hyperf/grpc-client 组件中的异常和单元测试。
v2.0.11 - 2020-09-14
新增
- #2455 为 hyperf/socketio-server 组件新增方法
Socket::getRequest用于获取Psr7规范的Request。 - #2459 为 hyperf/async-queue 组件新增监听器
ReloadChannelListener用于自动将超时队列里的消息移动到等待执行队列中。 - #2463 为 hyperf/database 组件新增可选的
ModelRewriteGetterSetterVisitor用于为模型生成对应的Getter和Setter。 - #2475 为 hyperf/retry 组件的
Fallback回调,默认增加throwable参数。
修复
- #2464 修复 hyperf/database 组件中,小驼峰模式模型的
fill方法无法正常使用的问题。 - #2478 修复 hyperf/websocket-server 组件中,
Sender::check无法检测非WebSocket的fd值。 - #2488 修复 hyperf/database 组件中,当
pdo实例化失败后beginTransaction调用失败的问题。
优化
- #2461 优化 hyperf/reactive-x 组件
HTTP路由监听器,可以监听任意端口路由。 - #2465 优化 hyperf/retry 组件
FallbackRetryPolicy中fallback除了可以填写被is_callable识别的代码外,还可以填写形如class@method的格式,框架会从Container中拿到对应的class,然后执行其method方法。
变更
- #2492 调整 hyperf/socketio-server 组件中的事件收集顺序,确保
sid早于自定义onConnect被添加到房间中。
v2.0.10 - 2020-09-07
新增
- #2411 为 hyperf/database 组件新增
Hyperf\Database\Query\Builder::forPageBeforeId方法。 - #2420 #2426 为 hyperf/command 组件新增默认选项
enable-event-dispatcher用于初始化事件触发器。 - #2433 为 hyperf/grpc-server 组件路由新增匿名函数支持。
- #2441 为 hyperf/socketio-server 组件中
SocketIO新增了一些setters。
修复
- #2427 修复事件触发器在使用
Pivot或MorphPivot不生效的问题。 - #2443 修复使用 hyperf/Guzzle 组件的
Coroutine Handler时,无法正确获取和传递traceid和spanid的问题。 - #2449 修复发布 hyperf/config-apollo 组件的配置文件时,配置文件名称错误的问题。
优化
- #2429 优化使用
@Inject并且没有设置@var时的错误信息,方便定位问题,改善编程体验。 - #2438 优化当使用 hyperf/model-cache 组件与数据库事务搭配使用时,在事务中删除或修改模型数据会在事务提交后即时再删除缓存,而不再是在删除或修改模型数据时删除缓存数据。
v2.0.9 - 2020-08-31
新增
- #2331 hyperf/nacos 组件增加授权接口。
- #2331 hyperf/nacos 组件增加
nacos.enable配置,用于控制是否启用Nacos服务。 - #2331 hyperf/nacos 组件增加配置合并类型,默认使用全量覆盖。
- #2377 为 gRPC 客户端 的 request 增加
ts请求头,以兼容 Node.js gRPC server 等。 - #2384 新增助手函数
optional(),以创建Hyperf\Utils\Optional对象或更方便 Optional 的使用。
修改
- #2331 修复 hyperf/nacos 组件,服务或配置不存在时,会抛出异常的问题。
- #2356 #2368 修复
pid_file被用户修改后,命令行server:start启动失败的问题。 - #2358 修复验证器规则
digits不支持int类型的问题。
优化
- #2359 优化自定义进程,在协程风格服务下,可以更加友好的停止。
- #2363 优化 hyperf/di 组件,使其不需要依赖 hyperf/config 组件。
- #2373 优化 hyperf/validation 组件的异常捕获器,使其返回
Response时,自动添加content-type头。
v2.0.8 - 2020-08-24
新增
- #2334 新增更加友好的数组递归合并方法
Arr::merge。 - #2335 新增
Hyperf/Utils/Optional,它可以接受任意参数,并允许访问该对象上的属性或调用其方法,即使给定的对象为null,也不会引发错误。 - #2336 新增
RedisNsqAdapter,它通过NSQ发布消息,使用Redis记录房间信息。
修复
- #2338 修复文件系统使用
S3适配器时,文件是否存在的逻辑与预期不符的 BUG。 - #2340 修复
__FUNCTION__和__METHOD__魔术方法无法在被AOP重写的方法里正常工作的 BUG。
优化
- #2319 优化
ResolverDispatcher,使项目发生循环依赖时,可以提供更加友好的错误提示。
v2.0.7 - 2020-08-17
新增
- #2307 #2312 hyperf/nsq 组件,新增
NSQD的HTTP客户端。
修复
- #2275 修复配置中心,拉取配置进程会出现阻塞的 BUG。
- #2276 修复
Apollo配置中心,当配置没有变更时,会清除所有本地配置项的 BUG。 - #2280 修复
Interface的方法会被AOP重写,导致启动报错的 BUG。 - #2281 当使用
Task组件,且没有启动协程时,Signal组件会导致启动报错的 BUG。 - #2304 修复当使用
SocketIOServer的内存适配器,删除sid时,会导致死循环的 BUG。 - #2309 修复
JsonRpcHttpTransporter无法设置自定义超时时间的 BUG。
v2.0.6 - 2020-08-10
新增
- #2125 新增 hyperf/jet 组件。
Jet是一个统一模型的 RPC 客户端,内置 JSONRPC 协议的适配,该组件可适用于所有的PHP (>= 7.2)环境,包括 PHP-FPM 和 Swoole 或 Hyperf。
修复
v2.0.5 - 2020-08-03
新增
修复
- #2210 修复
WebSocket握手成功后,不会立马触发OnOpen事件的 BUG。 - #2214 修复
WebSocket主动关闭连接时,不会触发OnClose事件的 BUG。 - #2218 修复在
协程 Server下,Sender::disconnect报错的 BUG。 - #2227 修复在
协程 Server下,建立keepalive连接后,上下文数据无法在请求结束后销毁的 BUG。
优化
- #2193 优化
Hyperf\Watcher\Driver\FindDriver,使其扫描有变动的文件更加精确。 - #2232 优化
model-cache的预加载功能,使其支持In和InRaw。
v2.0.4 - 2020-07-27
新增
- #2144 数据库查询事件
Hyperf\Database\Events\QueryExecuted添加$result字段。 - #2158 路由
Hyperf\HttpServer\Router\Handler中,添加$options字段。 - #2162 热更新组件添加
Hyperf\Watcher\Driver\FindDriver。 - #2169
Session组件新增配置session.options.domain,用于替换Request中获取的domain。 - #2174 模型生成器添加
ModelRewriteTimestampsVisitor,用于根据数据库字段created_at和updated_at, 重写模型字段$timestamps。 - #2175 模型生成器添加
ModelRewriteSoftDeletesVisitor,用于根据数据库字段deleted_at, 添加或者移除SoftDeletes。 - #2176 模型生成器添加
ModelRewriteKeyInfoVisitor,用于根据数据库主键,重写模型字段$incrementing$primaryKey和$keyType。
修复
优化
v2.0.3 - 2020-07-20
新增
- #1554 新增
hyperf/nacos组件。 - #2082 监听器
Hyperf\Signal\Handler\WorkerStopHandler添加信号SIGINT监听。 - #2097
hyperf/filesystem新增 TencentCloud COS 支持. - #2122 添加 Trait
\Hyperf\Snowflake\Concern\HasSnowflake为模型自动生成雪花算法的主键。
修复
- #2017 修复 Prometheus 使用 redis 打点时,改变 label 会导致收集报错的 BUG。
- #2117 修复使用
server:watch时,注解@Inject有时会失效的 BUG。 - #2123 修复
tracer会记录两次Redis 指令的 BUG。 - #2139 修复
ValidationMiddleware在WebSocket服务下使用会报错的 BUG。 - #2140 修复请求抛出异常时,
Session无法保存的 BUG。
优化
- #2080 方法
Hyperf\Database\Model\Builder::paginate中参数$perPage的类型从int更改为?int。 - #2110 在使用
hyperf/watcher时,会先检查进程是否存在,如果不存在,才会发送SIGTERM信号。 - #2116 优化组件
hyperf/di的依赖。 - #2121 在使用
gen:model时,如果用户自定义了与数据库字段一致的字段时,则会替换对应的@property。 - #2129 当 Response Json 格式化失败时,会抛出更加友好的错误提示。
v2.0.2 - 2020-07-13
修复
- #1898 修复定时器规则
$min-$max解析有误的 BUG。 - #2037 修复 TCP 服务,连接后共用一个协程,导致 DB 等连接池无法正常回收连接的 BUG。
- #2051 修复
CoroutineServer不会生成hyperf.pid的 BUG。 - #2055 修复
Guzzle在传输大数据包时会自动添加头Expect: 100-Continue,导致请求失败的 BUG。 - #2059 修复
SocketIOServer中Redis重连失败的 BUG。 - #2067 修复
hyperf/watcher组件Syntax错误会导致进程异常。 - #2085 修复注解
RetryFalsy会导致获得正确的结果后,再次重试。 - #2089 修复使用
gen:command后,脚本必须要进行修改,才能被加载到的 BUG。 - #2093 修复脚本
vendor:publish没有返回码导致报错的 BUG。
新增
优化
变更
- #2031 常量组件的错误码只支持
int和string。 - #2065
WebSocket消息发送器Hyperf\WebSocketServer\Sender支持push和disconnect。 - #2100 组件
hyperf/utils更新依赖doctrine/inflector版本到^2.0。
移除
- #2065 移除
Hyperf\WebSocketServer\Sender对方法sendsendto和close的支持,请使用push和disconnect。
v2.0.1 - 2020-07-02
新增
修复
- #1952 修复数据库迁移类存在时,也会生成同类名类,导致类名冲突的 BUG。
- #1960 修复
Hyperf\HttpServer\ResponseEmitter::isMethodsExists()判断错误的 BUG。 - #1961 修复因文件
config/autoload/aspects.php不存在导致服务无法启动的 BUG。 - #1964 修复接口请求时,数据体为空会导致
500错误的 BUG。 - #1965 修复
initRequestAndResponse失败后,会导致请求状态码与实际不符的 BUG。 - #1968 修复当修改
aspects.php文件后,Aspect无法安装修改后的结果运行的 BUG。 - #1985 修复注解全局配置不全为小写时,会导致
global_imports失败的 BUG。 - #1990 修复当父类存在与子类一样的成员变量时,
@Inject无法正常使用的 BUG。 - #2019 修复脚本
gen:model因为使用了morphTo或where导致生成对应的@property失败的 BUG。 - #2026 修复当使用了魔术方法时,LazyLoad 代理生成有误的 BUG。
变更
- #1986 当没有设置正确的
swoole.use_shortname变更脚本exit_code为SIGTERM。
优化
v2.0 - 2020-06-22
主要功能
- 重构 hyperf/di 组件,特别是对 AOP 和注解的优化,在 2.0 版本,该组件使用了一个全新的加载机制来提供 AOP 功能的支持。
- 对比 1.x 版本来说最显著的一个功能就是现在你可以通过 AOP 功能切入任何方式实例化的一个类了,比如说,在 1.x 版本,你只能切入由 DI 容器创建的类,你无法切入一个由
new关键词实例化的类,但在 2.0 版本都可以生效了。不过仍有一些例外的情况,您仍无法切入那些在启动阶段用来提供 AOP 功能的类; - 在 1.x 版本,AOP 只能作用于普通的类,无法支持
Final类,但在 2.0 版本您可以这么做了; - 在 1.x 版本,您无法在当前类的构造函数中使用
@Inject或@Value注解标记的类成员属性的值,但在 2.0 版本里,您可以这么做了; - 在 1.x 版本,只有通过 DI 容器创建的对象才能使
@Inject和@Value注解的功能生效,通过new关键词创建的对象无法生效,但在 2.0 版本,都可以生效了; - 在 1.x 版本,在使用注解时,您必须定义注解的命名空间来指定使用的注解类,但在 2.0 版本下,您可以为任一注解提供一个别名,这样在使用这个注解时可以直接使用别名而无需引入注解类的命名空间。比如您可以直接在任意类属性上标记
@Inject注解而无需编写use Hyperf\Di\Annotation\Inject;; - 在 1.x 版本,创建的代理类是一个目标类的子类,这样的实现机制会导致一些魔术常量获得的值返回的是代理类子类的信息,而不是目标类的信息,但在 2.0 版本,代理类会与目标类保持一样的类名和代码结构;
- 在 1.x 版本,当代理类缓存存在时则不会重新生成缓存,就算源代码发生了变化,这样的机制有助于扫描耗时的提升,但与此同时,这也会导致开发阶段的一些不便利,但在 2.0 版本,代理类缓存会根据源代码的变化而自动变化,这一改变会减少很多在开发阶段的心智负担;
- 为 Aspect 类增加了
priority优先级属性,现在您可以组织多个 Aspect 之间的顺序了; - 在 1.x 版本,您只能通过
@Aspect注解类定义一个 Aspect 类,但在 2.0 版本,您还可以通过配置文件、ConfigProvider 来定义 Aspect 类; - 在 1.x 版本,您在使用到依赖懒加载功能时,必须注册一个
Hyperf\Di\Listener\LazyLoaderBootApplicationListener监听器,但在 2.0 版本,您可以直接使用该功能而无需做任何的注册动作; - 增加了
annotations.scan.class_map配置项,通过该配置您可以将任意类替换成您自己的类,而使用时无需做任何的改变;
- 对比 1.x 版本来说最显著的一个功能就是现在你可以通过 AOP 功能切入任何方式实例化的一个类了,比如说,在 1.x 版本,你只能切入由 DI 容器创建的类,你无法切入一个由
依赖库更新
- 将
ext-swoole升级到了>=4.5; - 将
psr/event-dispatcher升级到了^1.0; - 将
monolog/monolog升级到了^2.0; - 将
phpstan/phpstan升级到了^0.12.18; - 将
vlucas/phpdotenv升级到了^4.0; - 将
symfony/finder升级到了^5.0; - 将
symfony/event-dispatcher升级到了^5.0; - 将
symfony/console升级到了^5.0; - 将
symfony/property-access升级到了^5.0; - 将
symfony/serializer升级到了^5.0; - 将
elasticsearch/elasticsearch升级到了^7.0;
类和方法的变更
- 移除了
Hyperf\Di\Aop\AstCollector; - 移除了
Hyperf\Di\Aop\ProxyClassNameVisitor; - 移除了
Hyperf\Di\Listener\LazyLoaderBootApplicationListener; - 移除了
Hyperf\Dispatcher\AbstractDispatcher类的dispatch(...$params)方法; - 移除了 hyperf/utils 组件中 ConfigProvider 中的
Hyperf\Contract\NormalizerInterface => Hyperf\Utils\Serializer\SymfonyNormalizer关系; - 移除了
Hyperf\Contract\OnOpenInterface、Hyperf\Contract\OnCloseInterface、Hyperf\Contract\OnMessageInterface、Hyperf\Contract\OnReceiveInterface接口中的$server参数的强类型声明;
新增
- #992 新增 hyperf/reactive-x 组件;
- #1245 为
ExceptionHandler新增了注解的定义方式; - #1245
ExceptionHandler新增了priority优先级属性,通过配置文件或注解方式均可定义优先级; - #1819 新增 hyperf/signal 组件;
- #1844 为 hyperf/model-cache 组件中的
ttl属性增加了\DateInterval类型的支持; - #1855 连接池新增了
ConstantFrequency恒定频率策略来释放限制的连接; - #1871 为 Guzzle 增加
sink选项支持; - #1805 新增 Coroutine Server 协程服务支持;
- 变更了
Hyperf\Contract\ProcessInterface中的bind(Server $server)方法声明为bind($server); - 变更了
Hyperf\Contract\ProcessInterface中的isEnable()方法声明为isEnable($server); - 配置中心、Crontab、服务监控、消息队列消费者现在可以通过协程模式来运行,且在使用协程服务模式时,也必须以协程模式来运行;
Hyperf\AsyncQueue\Environment的作用域改为当前协程内,而不是整个进程;- 协程模式下不再支持 Task 机制;
- 变更了
- #1877 在 PHP 8 下使用
@Inject注解时支持通过成员属性强类型声明来替代@var声明,如下所示:
class Example {/*** @Inject*/private ExampleService $exampleService;}
- #1890 新增
Hyperf\HttpServer\ResponseEmitter类来响应任意符合 PSR-7 标准的 Response 对象,同时抽象了Hyperf\Contract\ResponseEmitterInterface契约; - #1890 为
Hyperf\HttpMessage\Server\Response类新增了getTrailers()和getTrailer(string $key)和withTrailer(string $key, $value)方法; - #1920 新增方法
Hyperf\WebSocketServer\Sender::close(int $fd, bool $reset = null).
修复
- #1825 修复了
StartServer::execute的TypeError; - #1854 修复了在 filesystem 中使用
Runtime::enableCoroutine()时,is_resource不能工作的问题; - #1900 修复了
Model中的asDecimal方法类型有可能错误的问题; - #1917 修复了
Request::isXmlHttpRequest方法无法正常工作的问题;
变更
- #705 统一了 HTTP 异常的处理方式,现在统一抛出一个
Hyperf\HttpMessage\Exception\HttpException依赖类来替代在Dispatcher中直接响应的方式,同时提供了Hyperf\HttpServer\Exception\Handler\HttpExceptionHandler异常处理器来处理该类异常; - #1846 当您 require 了
symfony/serializer库,不再自动映射Hyperf\Contract\NormalizerInterface的实现类,您需要手动添加该映射关系,如下:
use Hyperf\Utils\Serializer\SerializerFactory;use Hyperf\Utils\Serializer\Serializer;return [Hyperf\Contract\NormalizerInterface::class => new SerializerFactory(Serializer::class),];
- #1924 重命名
Hyperf\GrpcClient\BaseClient内simpleRequest, getGrpcClient, clientStreamRequest方法名为_simpleRequest, _getGrpcClient, _clientStreamRequest;
移除
- #1890 Removed
Hyperf\Contract\Sendableinterface and all implementations of it. - #1905 Removed config
config/server.php, you can merge it intoconfig/config.php.
优化
- #1793 Socket.io 服务现在只在 onOpen and onClose 中触发 connect/disconnect 事件,同时将一些类方法从 private 级别调整到了 protected 级别,以便用户可以方便的重写这些方法;
- #1848 当 RPC 客户端对应的 Contract 发生变更时,自动重写生成对应的动态代理客户端类;
- #1863 为 async-queue 组件提供更加安全的停止机制;
- #1896 当在 constants 组件中使用了同样的 code 时,keys 会被合并起来;
v1.1.32 - 2020-05-21
修复
- #1734 修复模型多态查询,关联关系为空时,也会查询 SQL 的问题;
- #1739 修复
hyperf/filesystem组件 OSS HOOK 位运算错误,导致 resource 判断不准确的问题; - #1743 修复
grafana.json中错误的refId字段值; - #1748 修复
hyperf/amqp组件在使用其他连接池时,对应的concurrent.limit配置不生效的问题; - #1750 修复连接池组件,在连接关闭失败时会导致计数有误的问题;
- #1754 修复 BASE Server 服务,启动提示没有考虑 UDP 服务的情况;
- #1764 修复当时间值为 null 时,datatime 验证器执行失败的 BUG;
- #1769 修复
hyperf/socketio-server组件中,客户端初始化断开连接操作时会报 Notice 的错误的问题;
新增
- #1724 新增模型方法
Model::orWhereHasMorph,Model::whereDoesntHaveMorphandModel::orWhereDoesntHaveMorph; - #1741 新增
Hyperf\Command\Command::choiceMultiple(): array方法,因为choice方法的返回类型为string,所以就算设置了$multiple` 参数也无法处理多个选择的情况; - #1742 新增模型 自定义类型转换器 功能;
- 新增 interface
Castable,CastsAttributes和CastsInboundAttributes; - 新增方法
Model\Builder::withCasts; - 新增方法
Model::loadMorph,Model::loadMorphCount和Model::syncAttributes;
- 新增 interface
v1.1.31 - 2020-05-14
新增
修复
优化
- #1710 MAC 系统下不再使用
cli_set_process_title方法设置进程名。
v1.1.30 - 2020-05-07
新增
修复
优化
- #1670 优化掉
Cache 组件一条无意义的删除指令。
v1.1.28 - 2020-04-30
新增
- #1645 匿名函数路由支持参数注入。
- #1647 为
model-cache组件添加RedisStringHandler。 - #1654 新增
RenderException统一捕获view组件抛出的异常。
修复
- #1639 修复
rpc-client会从consul中获取到不健康节点的 BUG。 - #1641 修复
rpc-client获取到的结果为null时,会抛出RequestException的 BUG。 - #1641 修复
rpc-server中jsonrpc-tcp-length-check协议,无法在consul中添加心跳检查的 BUG。 - #1650 修复脚本
describe:routes列表展示有误的 BUG。 - #1655 修复
MysqlProcessor::processColumns无法在MySQL Server 8.0版本中正常工作的 BUG。
优化
- #1636 优化
co-phpunit脚本,当出现case验证失败后,协程也可以正常结束。
v1.1.27 - 2020-04-23
新增
- #1575 为脚本
gen:model生成的模型,自动添加relationscope和attributes的变量注释。 - #1586 添加
symfony/event-dispatcher组件小于4.3时的conflict配置。用于解决用户使用了4.3以下版本时,导致SymfonyDispatcher实现冲突的 BUG。 - #1597 为
AMQP消费者,添加最大消费次数maxConsumption。 - #1603 为
WebSocket服务添加基于fd存储的Context。
修复
- #1553 修复
jsonrpc服务,发布了相同名字不同协议到consul后,客户端无法正常工作的 BUG。 - #1589 修复了文件锁在协程下可能会造成死锁的 BUG。
- #1607 修复了重写后的
go方法,返回值与swoole原生方法不符的 BUG。 - #1624 修复当路由
Handler是匿名函数时,脚本describe:routes执行失败的 BUG。
v1.1.26 - 2020-04-16
新增
- #1578
UploadedFile支持getStream方法。
修复
- #1563 修复服务关停后,定时器的
onOneServer配置不会被重置。 - #1565 当
DB组件重连Mysql时,重置事务等级为 0。 - #1572 修复
Hyperf\GrpcServer\CoreMiddleware中,自定义类的父类找不到时报错的 BUG。 - #1577 修复
describe:routes脚本server配置不生效的 BUG。 - #1579 修复
migrate:refresh脚本step参数不为int时会报错的 BUG。
变更
- #1560 修改
hyperf/cache组件文件缓存引擎中 原生的文件操作为Filesystem。 - #1568 修改
hyperf/async-queue组件Redis引擎中的\Redis为RedisProxy。
v1.1.25 - 2020-04-09
修复
- #1532 修复 ‘Symfony\Component\EventDispatcher\EventDispatcherInterface’ 在 —no-dev 条件下安装会出现找不到接口的问题;
v1.1.24 - 2020-04-09
新增
- #1501 添加
Symfony命令行事件触发器,使之可以与hyperf/event组件结合使用; - #1502 为注解
Hyperf\AsyncQueue\Annotation\AsyncQueueMessage添加maxAttempts参数,用于控制消息失败时重复消费的次数; - #1510 添加
Hyperf/Utils/CoordinatorManager,用于提供更优雅的启动和停止服务,服务启动前不响应请求,服务停止前,保证某些循环逻辑能够正常结束; - #1517 为依赖注入容器的懒加载功能添加了对接口继承和抽象方法继承的支持;
- #1529 处理
response cookies中的SameSite属性;
修复
- #1494 修复单独使用
Redis组件时,注释@mixin会被当成注解的 BUG; - #1499 修复引入
hyperf/translation组件后,hyperf/constants组件的动态参数不生效的 BUG; - #1504 修复
RPC代理客户端无法正常处理返回值为nullable类型的方法; - #1507 修复
hyperf/consul组件的catalog注册方法调用会失败的 BUG;
v1.1.23 - 2020-04-02
新增
- #1467 为
filesystem组件添加默认配置; - #1469 为
Hyperf/Guzzle/HandlerStackFactory添加getHandler()方法,并尽可能的使用make()创建handler; - #1480 RPC client 现在会自动代理父接口的方法定义;
变更
- #1481 异步队列创建消息时,使用
make方法创建;
修复
- #1471 修复
NSQ组件,数据量超过max-output-buffer-size接收数据失败的BUG; - #1472 修复
NSQ组件,在消费者中发布消息时,会导致消费者无法正常消费的BUG; - #1474 修复
NSQ组件,requeue消息时,消费者会意外重启的BUG; - #1477 修复使用
Hyperf\Testing\Client::flushContext时,会引发Fixed Invalid argument supplied异常的BUG;
v1.1.22 - 2020-03-26
新增
- #1440 为 NSQ 的每个连接新增
enable配置项来控制连接下的所有消费者的自启功能; - #1451 新增 Filesystem 组件;
- #1459 模型 Collection 新增 macroable 支持;
- #1463 为 Guzzle Handler 增加
on_stats选项的功能支持;
变更
修复
- #1445 修复命令
describe:routes缺失了带参数的路由; - #1449 修复了高基数请求路径的内存溢出的问题;
- #1454 修复 Collection 的
flatten()方法因为INF参数值为float类型导致无法使用的问题; - #1458 修复了 Guzzle 不支持 Elasticsearch 版本大于 7.0 的问题;
v1.1.21 - 2020-03-19
新增
- #1393 为
Hyperf\HttpMessage\Stream\SwooleStream实现更多的方法; - #1419 允许 ConfigFetcher 通过一个协程启动而无需额外启动一个进程;
- #1424 允许用户通过配置文件的形式修改
session_name配置; - #1435 为模型缓存增加
use_default_value属性来自动修正缓存数据与数据库数据之间的差异; - #1436 为 NSQ 消费者增加
isEnable()方法来控制消费者进程是否启用自启功能;
v1.1.20 - 2020-03-12
新增
- #1402 增加
Hyperf\DbConnection\Annotation\Transactional注解来自动开启一个事务; - #1412 增加
Hyperf\View\RenderInterface::getContents()方法来直接获取 View Render 的渲染内容; - #1416 增加 Swoole 事件常量
ON_WORKER_ERROR.
修复
- #1405 修复当模型存在
hidden属性时,模型缓存功能缓存的字段数据不正确的问题; - #1410 修复 Tracer 无法追踪由
Hyperf\Redis\RedisFactory创建的连接的调用链; - #1415 修复阿里 ACM 客户端在当
SecurityTokenHeader 为空时 sts token 会解密失败的问题;
v1.1.19 - 2020-03-05
新增
- #1339 #1394 新增
describe:routes命令来显示路由的细节信息; - #1354 为
config-aliyun-acm组件新增 ecs ram authorization; - #1362 为
Hyperf\Pool\SimplePool\PoolFactory增加getPoolNames()来获取连接池的名称; - #1371 新增
Hyperf\DB\DB::connection()方法来指定要使用的连接; - #1384 为
gen:model命令新增property-case选项来设定成员属性的命名风格;
修复
- #1386 修复异步消息投递注解当用在存在可变参数的方法上失效的问题;
v1.1.18 - 2020-02-27
新增
- #1305 为
hyperf\metric组件添加预制的Grafana面板; - #1328 添加
ModelRewriteInheritanceVisitor来重写 model 类继承的gen:model命令; - #1331 添加
Hyperf\LoadBalancer\LoadBalancerInterface::getNodes(); - #1335 为
command添加AfterExecute事件; - #1361 logger 组件添加
processors配置;
修复
- #1330 修复当使用
(new Parallel())->add($callback, $key)并且参数$key并非 string 类型, 返回结果将会从 0 开始排序$key; - #1338 修复当从 server 设置自己的设置时, 主 server 的配置不生效的 bug;
- #1344 修复队列在没有设置最大消息数时每次都需要校验长度的 bug;
变更
- #1324 hyperf/async-queue 组件不再提供默认启用
Hyperf\AsyncQueue\Listener\QueueLengthListener;
优化
删除
- #1303 删除
Hyperf\RpcServer\Router\Router中无用的$httpMethod;
v1.1.17 - 2020-01-24
新增
- #1220 为 Apollo 组件增加 BootProcessListener 来实现在服务启动时从 Apollo 拉取配置的功能;
- #1292 为
Hyperf\Database\Schema\Blueprint::foreign()方法的返回类型增加了Hyperf\Database\Schema\ForeignKeyDefinition类型; - #1313 为
hyperf\crontab组件增加了 Command 模式支持; - #1321 增加 hyperf/nsq 组件,NSQ 是一个实时的分布式消息平台;
修复
- #1291 修复 hyperf/super-globals 组件的
$_SERVER存在小写键值与 PHP-FPM 不统一的问题; - #1308 修复 hyperf/validation 组件缺失的一些翻译内容, 包括 gt, gte, ipv4, ipv6, lt, lte, mimetypes, not_regex, starts_with, uuid;
- #1310 修复服务注册在当服务同名不同协议的情况下会被覆盖的问题;
- #1315 修复
Hyperf\AsyncQueue\Process\ConsumerProcess类缺失的 $config 变量;
v1.1.16 - 2020-01-16
新增
- #1263 为 async-queue 组件增加
QueueLength事件; - #1276 为 Consul 客户端增加 ACL token 支持;
- #1277 为 hyperf/metric 组件增加 NoOp 驱动,用来临时关闭 metric 功能;
修复
- #1262 修复 keepaliveIO 功能下 socket 会被消耗光的问题;
- #1266 修复当自定义进程存在 Timer 的情况下会无法重启的问题;
- #1272 修复 JSONRPC 下当 Request ID 为 null 时检查会失败的问题;
优化
- #1273 优化 gRPC 客户端:
- 优化使 gRPC 客户端在当连接与 Server 断开时会自动重连;
- 优化使当 gRPC 客户端被垃圾回收时,已建立的连接会自动关闭;
- 修复关闭了的客户端依旧会持有 HTTP2 连接的问题;
- 修复 gRPC 客户端的 channel pool 可能会存在非空 channel 的问题;
- 优化使 gRPC 客户端会自动初始化,所以现在可以在构造函数和容器注入下使用;
删除
- #1286 从 require-dev 中移除 phpstan/phpstan 包的依赖。
v1.1.15 - 2020-01-10
修复
v1.1.14 - 2020-01-10
新增
- #1166 为 AMQP 增加 KeepaliveIO 功能;
- #1208 为 JSON-RPC 的响应增加了
error.data.code值来传递 Exception Code; - #1208 为
Hyperf\Rpc\Contract\TransporterInterface增加了recv方法; - #1215 新增 hyperf/super-globals 组件,用来适配一些不支持 PSR-7 的第三方包;
- #1219 为 AMQP 消费者增加
enable属性,通过该属性来控制该消费者是否跟随 Server 一同启动;
修复
- #1208 修复 Exception 和 error 在 JSON-RPC TCP Server 下无法被正确处理的问题;
- #1208 修复 JSON-RPC 没有检查 Request ID 和 Response ID 是否一致的问题;
- #1223 修复 ConfigProvider 扫描器不会扫描 composer.json 内 require-dev 的配置;
- #1254 修复执行
init-proxy.sh命令在某些环境如 Alpine 下会报 bash 不存在的问题;
优化
- #1208 优化了 JSON-RPC 组件的部分逻辑;
- #1174 调整了
Hyperf\Utils\Parallel在输出异常时的格式,现在会一同打印 Trace 信息; - #1224 允许 Aliyun ACM 配置中心的配置获取进程解析 UTF-8 字符,同时在 Worker 启动后会自动获取一次配置,以及拉取的配置现在会传递到自定义进程了;
- #1235 在 AMQP 生产者执行 declare 后释放对应的连接;
修改
- #1227 升级
jcchavezs/zipkin-php-opentracing依赖至 0.1.4 版本;
v1.1.13 - 2020-01-03
新增
- #1137
constants组件增加国际化支持; - #1165
Hyperf\HttpServer\Contract\RequestInterface新增route方法; - #1195 注解
Cacheable和CachePut增加最大超时时间偏移量配置; - #1204
database组件增加了insertOrIgnore方法; - #1216
RenderInterface::render()方法的$data参数,添加了默认值; - #1221
swoole-tracker组件添加了traceId和spanId;
修复
- #1175 修复
Hyperf\Utils\Collection::random当传入null时,无法正常工作的BUG; - #1199 修复使用
Task注解时,参数无法使用动态变量的BUG; - #1200 修复
metric组件,请求路径会携带参数的BUG; - #1210 修复验证器规则
size无法作用于integer的BUG;
优化
- #1211 自动将项目名转化为
prometheus的规范命名;
修改
- #1217 将
zendframework/zend-mime替换为laminas/laminas-mine;
v1.1.12 - 2019-12-26
新增
- #1177 为
jsonrpc组件增加了新的协议jsonrpc-tcp-length-check,并对部分代码进行了优化;
修复
- #1175 修复
Hyperf\Utils\Collection::random方法不支持传入null; - #1178 修复
Hyperf\Database\Query\Builder::chunkById方法不支持元素是array的情况; - #1189 修复
Hyperf\Utils\Collection::operatorForWhere方法,operator只能传入string的 BUG;
优化
- #1186 日志配置中,只填写
formatter.class的情况下,可以使用默认的formatter.constructor配置;
v1.1.11 - 2019-12-19
新增
- #849 为 hyperf/tracer 组件增加 span tag 配置功能;
修复
- #1142 修复
Register::resolveConnection会返回 null 的问题; - #1144 修复配置文件形式下服务限流会失效的问题;
- #1145 修复
CoroutineMemoryDriver::delKey方法的返回值错误的问题; - #1153 修复验证器的
alpha_num规则无法按预期运行的问题;
v1.1.10 - 2019-12-12
修复
- #1104 修复了 Guzzle 客户端的重试中间件的状态码识别范围为 2xx;
- #1105 修复了 Retry 组件在重试尝试前不还原管道堆栈的问题;
- #1106 修复了数据库在开启
sticky模式时连接回归连接池时没有重置状态的问题; - #1119 修复 TCP 协议下的 JSONRPC Server 在解析 JSON 失败时无法正确的返回预期的 Error Response 的问题;
- #1124 修复 Session 中间件在储存当前的 URL 时,当 URL 以
/结尾时会忽略斜杠的问题;
变更
- #1108 重命名
Hyperf\Tracer\Middleware\TraceMiddeware为Hyperf\Tracer\Middleware\TraceMiddleware; - #1108 升级
Hyperf\ServiceGovernance\Listener\ServiceRegisterListener类的成员属性和方法的等级为protected,以便更好的重写相关方法;
v1.1.9 - 2019-12-05
新增
- #948 为 DI Container 增加懒加载功能;
- #1044 为 AMQP Consumer 增加
basic_qos配置; - #1056 #1081 DI Container 增加
define()和set()方法,同时增加Hyperf\Contract\ContainerInterface; - #1059
job.stub模板增加构造函数; - #1084 支持 PHP 7.4,TrvisCI 增加 PHP 7.4 运行支持;
修复
- #1007 修复
vendor:: publish的命令返回值; - #1049 修复
Hyperf\Cache\Driver\RedisDriver::clear会有可能删除所有缓存失败的问题; - #1055 修复 Image 验证时后缀大小写的问题;
- #1085 #1091 Fixed
@Retry注解使用时会找不到容器的问题;
v1.1.8 - 2019-11-28
新增
修复
变更
- #1021 WebSocket 客户端新增默认端口支持,根据协议默认为 80 和 443;
- #1034 去掉了
Hyperf\Amqp\Builder\Builder的arguments参数的 array 类型限制,允许接受其他类型如 AmqpTable;
优化
- #1014 优化
Command::execute的返回值类型; - #1022 提供更清晰友好的连接池报错信息;
- #1039 在 CoreMiddleware 中自动设置最新的 ServerRequest 对象到 Context;
v1.1.7 - 2019-11-21
新增
- #860 新增 hyperf/retry 组件;
- #952 新增 ThinkTemplate 视图引擎支持;
- #973 新增 JSON RPC 在 TCP 协议下的连接池支持,通过
Hyperf\JsonRpc\JsonRpcPoolTransporter来使用连接池版本; - #976 为
hyperf/amqp组件新增close_on_destruct选项参数,用来控制代码在执行析构函数时是否主动去关闭连接;
变更
- #944 将组件内所有使用
@Listener和@Process注解来注册的改成通过ConfigProvider来注册; - #977 调整
init-proxy.sh命令的行为,改成只删除runtime/container目录;
修复
- #955 修复
hyperf/db组件的port和charset参数无效的问题; - #956 修复模型缓存中使用到
RedisHandler::incr在集群模式下会失败的问题; - #966 修复当在非 Worker 进程环境下使用分页器会报错的问题;
- #968 修复当
classes和annotations两种 Aspect 切入模式同时存在于一个类时,其中一个可能会失效的问题; - #980 修复 Session 组件内
migrate,save核has方法无法使用的问题; - #982 修复
Hyperf\GrpcClient\GrpcClient::yield在获取 Channel Pool 时没有通过正确的获取方式去获取的问题; - #987 修复通过
gen:command命令生成的命令类缺少调用parent::configure()方法的问题;
优化
- #991 优化
Hyperf\DbConnection\ConnectionResolver::connection的异常情况处理;
v1.1.6 - 2019-11-14
新增
- #827 新增了极简的高性能的 DB 组件;
- #905 视图组件增加了
twig模板引擎; - #911 定时任务支持多实例情况下,只运行单一实例的定时任务;
- #913 增加监听器
Hyperf\ExceptionHandler\Listener\ErrorExceptionHandler; - #921 新增
Session组件; - #931 阿波罗配置中心增加
strict_mode,自动将配置转化成对应数据类型; - #933 视图组件增加了
plates模板引擎; - #937 Nats 组件添加消费者消费和订阅事件;
- #941 新增
Zookeeper配置中心;
变更
- #934 修改
WaitGroup继承\Swoole\Coroutine\WaitGroup;
修复
- #897 修复
Nats消费者,pool配置无效的 BUG; - #901 修复
GraphQL组件,Factory注解无法正常使用的 BUG; - #903 修复添加
hyperf/rpc-client依赖后,init-proxy脚本无法正常停止的 BUG; - #904 修复监听器监听
Hyperf\Framework\Event\BeforeMainServerStart事件时,无法使用IO操作的 BUG; - #906 修复
Hyperf\HttpMessage\Server\Request端口获取有误的 BUG; - #907 修复
Nats组件requestSync方法,超时时间不准确的 BUG; - #909 修复
Parallel内逻辑抛错后,无法正常停止的 BUG; - #925 修复因
Socket无法正常建立,导致进程频繁重启的 BUG; - #932 修复
Translator::setLocale在协程环境下,数据混淆的 BUG; - #940 修复
WebSocketClient::push方法finish参数类型错误;
优化
- #907 优化
Nats消费者频繁重启; - #928
Hyperf\ModelCache\Cacheable::query批量修改数据时,可以删除对应缓存; - #936 优化调用模型缓存
increment时,可能因并发情况导致的数据有错;
v1.1.5 - 2019-11-07
新增
- #812 新增计划任务在集群下仅执行一次的支持;
- #820 新增 hyperf/nats 组件;
- #832 新增
Hyperf\Utils\Codec\Json; - #833 新增
Hyperf\Utils\Backoff; - #852 为
Hyperf\Utils\Parallel新增clear()方法来清理所有已添加的回调; - #854 新增
Hyperf\GraphQL\GraphQLMiddleware用于解析 GraphQL 请求; - #859 新增 Consul 集群的支持,现在可以从 Consul 集群中拉取服务提供者的节点信息;
- #873 新增 Redis 集群的客户端支持;
修复
- #831 修复 Redis 客户端连接在 Redis Server 重启后不会自动重连的问题;
- #835 修复
Request::inputs方法的默认值参数与预期效果不一致的问题; - #841 修复数据库迁移在多数据库的情况下连接无效的问题;
- #844 修复 Composer 阅读器不支持根命名空间的用法的问题;
- #846 修复 Redis 客户端的
scan,hScan,zScan,sScan无法使用的问题; - #850 修复 Logger group 在 name 一样时不生效的问题;
优化
- #832 优化了 Response 对象在转 JSON 格式时的异常处理逻辑;
- #840 使用
\Swoole\Timer::*来替代swoole_timer_*函数; - #859 优化了 RPC 客户端去 Consul 获取健康的节点信息的逻辑;
v1.1.4 - 2019-10-31
新增
- #778
Hyperf\Testing\Client新增PUT和DELETE方法; - #784 新增服务监控组件;
- #795
AbstractProcess增加restartInterval参数,允许子进程异常或正常退出后,延迟重启; - #804
Command增加事件BeforeHandleAfterHandle和FailToHandle;
变更
- #793
Pool::getConnectionsInChannel方法由protected改为public. - #811 命令
di:init-proxy不再主动清理代理缓存,如果想清理缓存请使用命令vendor/bin/init-proxy.sh;
修复
- #779 修复
JPG文件验证不通过的问题; - #787 修复
db:seed参数--class多余,导致报错的问题; - #795 修复自定义进程在异常抛出后,无法正常重启的 BUG;
- #796 修复
etcd配置中心enable即时设为false,在项目启动时,依然会拉取配置的 BUG;
优化
v1.1.3 - 2019-10-24
新增
- #745 为
gen:model命令增加with-comments选项,以标记是否生成字段注释; - #747 为 AMQP 消费者增加
AfterConsume,BeforeConsume,FailToConsume事件; - #762 为 Parallel 特性增加协程控制功能;
变更
- #767 重命名
AbstractProcess的running属性名为listening;
修复
- #741 修复执行
db:seed命令缺少文件名报错的问题; - #748 修复
SymfonyNormalizer不处理array类型数据的问题; - #769 修复当 JSON RPC 响应的结果的 result 和 error 属性为 null 时会抛出一个无效请求的问题;
v1.1.2 - 2019-10-17
新增
- #722 为 AMQP Consumer 新增
concurrent.limit配置来对协程消费进行速率限制;
变更
- #678 为
gen:model命令增加ignore-tables参数,同时默认屏蔽migrations表,即migrations表对应的模型在执行gen:model命令时不会生成;
修复
- #694 修复
Hyperf\Validation\Request\FormRequest的validationData方法不包含上传的文件的问题; - #700 修复
Hyperf\HttpServer\Contract\ResponseInterface的download方法不能按预期运行的问题; - #701 修复自定义进程在出现未捕获的异常时不会自动重启的问题;
- #704 修复
Hyperf\Validation\Middleware\ValidationMiddleware在 action 参数没有定义参数类型时会报错的问题; - #713 修复当开启了注解缓存功能是,
ignoreAnnotations不能按预期工作的问题; - #717 修复
getValidatorInstance方法会重复创建验证器对象的问题; - #724 修复
db:seed命令在没有传database参数时会报错的问题; - #729 修正组件配置项
db:model为gen:model; - #737 修复非 Worker 进程下无法使用 Tracer 组件来追踪调用链的问题;
v1.1.1 - 2019-10-08
Fixed
- #664 调整通过
gen:request命令生成 FormRequest 时authorize方法的默认返回值; - #665 修复启动时永远会自动生成代理类的问题;
- #667 修复当访问一个不存在的路由时
Hyperf\Validation\Middleware\ValidationMiddleware会抛出异常的问题; - #672 修复当 Action 方法上的参数类型为非对象类型时
Hyperf\Validation\Middleware\ValidationMiddleware会抛出一个未捕获的异常的问题; - #674 修复使用
gen:model命令从数据库生成模型时模型表名错误的问题;
v1.1.0 - 2019-10-08
新增
- #401 新增了
Hyperf\HttpServer\Router\Dispatched对象来储存解析的路由信息,在用户中间件之前便解析完成以便后续的使用,同时也修复了路由里带参时中间件失效的问题; - #402 新增
@AsyncQueueMessage注解,通过定义此注解在方法上,表明这个方法的实际运行逻辑是投递给 Async-Queue 队列去消费; - #418 允许发送 WebSocket 消息到任意的 fd,即使当前的 Worker 进程不持有对应的 fd,框架会自动进行进程间通讯来实现发送;
- #420 为数据库模型增加新的事件机制,与 PSR-15 的事件调度器相配合,可以解耦的定义 Listener 来监听模型事件;
- #429 #643 新增 Validation 表单验证器组件,这是一个衍生于 illuminate/validation 的组件,感谢 Laravel 开发组提供如此好用的验证器组件,;
- #441 当 Redis 连接处于低使用频率的情况下自动关闭空闲连接;
- #478 更好的适配 OpenTracing 协议,同时适配 Jaeger,Jaeger 是一款优秀的开源的端对端分布式调用链追踪系统;
- #500 为
Hyperf\HttpServer\Contract\ResponseInterface增加链式方法调用支持,解决调用了代理方法的方法后无法再调用原始方法的问题; - #523 为
gen:model命令新增了table-mapping选项; - #555 新增了一个全局函数
swoole_hook_flags来获取由常量SWOOLE_HOOK_FLAGS所定义的 Runtime Hook 等级,您可以在bin/hyperf.php通过! defined('SWOOLE_HOOK_FLAGS') && define('SWOOLE_HOOK_FLAGS', SWOOLE_HOOK_ALL);的方式来定义该常量,即 Runtime Hook 等级; - #596 为
@Inject注解增加了required参数,当您定义@Inject(required=false)注解到一个成员属性上,那么当该依赖项不存在时也不会抛出Hyperf\Di\Exception\NotFoundException异常,而是以默认值null来注入,required参数的默认值为true,当在构造器注入的情况下,您可以通过对构造器的参数定义为nullable来达到同样的目的; - #597 为 AsyncQueue 组件的消费者增加
Concurrent来控制消费速率; - #599 为 AsyncQueue 组件的消费者增加根据当前重试次数来设定该消息的重试等待时长的功能,可以为消息设置阶梯式的重试等待;
- #619 为 Guzzle 客户端增加 HandlerStackFactory 类,以便更便捷地创建一个 HandlerStack;
- #620 为 AsyncQueue 组件的消费者增加自动重启的机制;
- #629 允许通过配置文件的形式为 Apollo 客户端定义
clientIp,pullTimeout,intervalTimeout配置; - #647 根据 server 的配置,自动为 TCP Response 追加
eof; - #648 为 AMQP Consumer 增加
nack的返回类型,当消费逻辑返回Hyperf\Amqp\Result::NACK时抽象消费者会以basic_nack方法来响应消息; - #654 增加所有 Swoole Event 的默认回调和对应的 Hyperf 事件;
变更
- #437
Hyperf\Testing\Client在遇到异常时不再直接抛出异常而是交给 ExceptionHandler 流程处理; - #463 简化了
container.php文件及优化了注解缓存机制;
新的 config/container.php 文件内容如下:
<?phpuse Hyperf\Di\Container;use Hyperf\Di\Definition\DefinitionSourceFactory;use Hyperf\Utils\ApplicationContext;$container = new Container((new DefinitionSourceFactory(true))());if (! $container instanceof \Psr\Container\ContainerInterface) {throw new RuntimeException('The dependency injection container is invalid.');}return ApplicationContext::setContainer($container);
- #486
Hyperf\HttpMessage\Server\Request的getParsedBody方法现在可以直接处理 JSON 格式的数据了; - #523 调整
gen:model命令生成的模型类名默认为单数,如果表名为复数,则默认生成的类名为单数; - #614 #617 调整了 ConfigProvider 类的结构, 同时将
config/dependencies.php文件移动到了config/autoload/dependencies.php内,且文件结构去除了dependencies层,此后也意味着您也可以将dependencies配置写到config/config.php文件内;
Config Provider 内数据结构的变化: 之前:
'scan' => ['paths' => [__DIR__,],'collectors' => [],],
现在:
'annotations' => ['scan' => ['paths' => [__DIR__,],'collectors' => [],],],
增加了一层 annotations,这样将与配置文件结构一致,不再特殊
- #630 变更了
Hyperf\HttpServer\CoreMiddleware类的实例化方式,使用make()来替代了new; - #631 变更了 AMQP Consumer 的实例化方式,使用
make()来替代了new; - #637 调整了
Hyperf\Contract\OnMessageInterface和Hyperf\Contract\OnOpenInterface的第一个参数的类型约束, 使用Swoole\WebSocket\Server替代Swoole\Server; - #638 重命名了
db:model命令为gen:model命令,同时增加了一个 Visitor 来优化创建的$connection成员属性,如果要创建的模型类的$connection属性的值与继承的父类一致,那么创建的模型类将不会包含此属性;
移除
- #401 移除了
Hyperf\JsonRpc\HttpServerFactory,Hyperf\HttpServer\ServerFactory,Hyperf\GrpcServer\ServerFactory类; - #402 移除了弃用的
AsyncQueue::delay方法; - #563 移除了弃用的
Hyperf\Server\ServerInterface::SERVER_TCP常量,使用Hyperf\Server\ServerInterface::SERVER_BASE来替代; - #602 移除了
Hyperf\Utils\Coroutine\Concurrent的timeout参数; - #612 移除了 RingPHP Handler 里没有使用到的
$url变量; - #616 #618 移除了 Guzzle 里一些无用的代码;
优化
- #644 优化了注解扫描的流程,分开
app和vendor两部分来扫描注解,大大减少了用户的扫描耗时; - #653 优化了 Swoole shortname 的检测逻辑,现在的检测逻辑更加贴合 Swoole 的实际配置场景,也不只是
swoole.use_shortname = "Off"才能通过检测了;
修复
- #448 修复了当 HTTP Server 或 WebSocket Server 存在时,TCP Server 有可能无法启动的问题;
- #623 修复了当传递一个
null值到代理类的方法参数时,方法仍然会获取方法默认值的问题;
v1.0.16 - 2019-09-20
新增
- #565 增加对 Redis 客户端的
options配置参数支持; - #580 增加协程并发控制特性,通过
Hyperf\Utils\Coroutine\Concurrent可以实现一个代码块内限制同时最多运行的协程数量;
变更
- #583 当
BaseClient::start失败时会抛出Hyperf\GrpcClient\Exception\GrpcClientException异常; - #585 当投递到 TaskWorker 执行的 Task 失败时,会回传异常到 Worker 进程中;
修复
- #564 修复某些情况下
Coroutine\Http2\Client->send返回值不正确的问题; - #567 修复当 JSON RPC 消费者配置 name 不是接口时,无法生成代理类的问题;
- #571 修复 ExceptionHandler 的
stopPropagation的协程变量污染的问题; - #579 动态初始化
snowflake的 MetaData,主要修复当在命令模式下使用 Snowflake 时,比如di:init-proxy命令,会连接到 Redis 服务器至超时;
v1.0.15 - 2019-09-11
修复
- #534 修复 Guzzle HTTP 客户端的
CoroutineHanlder没有处理状态码为-3的情况; - #541 修复 gRPC 客户端的
$client参数设置错误的问题; - #542 修复
Hyperf\Grpc\Parser::parseResponse无法支持 gRPC 标准状态码的问题; - #551 修复当服务端关闭了 gRPC 连接时,gRPC 客户端会残留一个死循环的协程;
- #558 修复
UDP Server无法正确配置启动的问题;
优化
- #549 优化了
Hyperf\Amqp\Connection\SwooleIO的read和write方法,减少不必要的重试; - #559 优化
Hyperf\HttpServer\Response::redirect()方法,自动识别链接首位是否为斜杠并合理修正参数; - #560 优化
Hyperf\WebSocketServer\CoreMiddleware,移除了不必要的代码;
移除
- #545 移除了
Hyperf\Database\Model\SoftDeletes内无用的restoring和restored静态方法;
即将移除
- #558 标记了
Hyperf\Server\ServerInterface::SERVER_TCP常量为弃用状态,该常量将于v1.1移除,由更合理的Hyperf\Server\ServerInterface::SERVER_BASE常量替代;
v1.0.14 - 2019-09-05
新增
- #389 #419 #432 #524 新增 Snowflake 官方组件, Snowflake 是一个由 Twitter 提出的分布式全局唯一 ID 生成算法,hyperf/snowflake 组件实现了该算法并设计得易于使用,同时在设计上提供了很好的可扩展性,可以很轻易的将该组件转换成其它基于 Snowflake 算法的变体算法;
- #525 为
Hyperf\HttpServer\Contract\ResponseInterface增加一个download()方法,提供便捷的下载响应返回;
变更
- #482 生成模型文件时,当设置了
refresh-fillable选项时重新生成模型的fillable属性,同时该命令的默认情况下将不会再覆盖生成fillable属性; - #501 当
Mapping注解的path属性为一个空字符串时,那么该路由则为/prefix; - #513 如果项目设置了
app_name属性,则进程名称会自动带上该名称; - #508 #526 当在非协程环境下执行
Hyperf\Utils\Coroutine::parentId()方法时会返回一个null值;
修复
- #479 修复了当 Elasticsearch client 的
host属性设置有误时,返回类型错误的问题; - #514 修复当 Redis 密码配置为空字符串时鉴权失败的问题;
- #527 修复 Translator 无法重复翻译的问题;
v1.0.13 - 2019-08-28
新增
- #449 新增一个独立组件 hyperf/translation, 衍生于 illuminate/translation;
- #449 为 GRPC-Server 增加标准错误码;
- #450 为
Hyperf\Database\Schema\Schema类的魔术方法增加对应的静态方法注释,为 IDE 提供代码提醒的支持;
变更
- #451 在使用
@AutoController注解时不再会自动为魔术方法生成对应的路由; - #468 让 GRPC-Server 和 HTTP-Server 提供的异常处理器处理所有的异常,而不只是
ServerException;
修复
v1.0.12 - 2019-08-21
新增
- #405 增加
Hyperf\Utils\Context::override()方法,现在你可以通过override方法获取某些协程上下文的值并修改覆盖它; - #415 对 Logger 的配置文件增加多个 Handler 的配置支持;
变更
- #431 移除了
Hyperf\GrpcClient\GrpcClient::openStream()的第 3 个参数,这个参数不会影响实际使用;
修复
- #414 修复
Hyperf\WebSockerServer\Exception\Handler\WebSocketExceptionHandler内的变量名称错误的问题; - #424 修复 Guzzle 在使用
Hyperf\Guzzle\CoroutineHandler时配置proxy参数时不支持数组传值的问题; - #430 修复
Hyperf\HttpServer\Request::file()当以一个 Name 上传多个文件时,返回格式不正确的问题; - #431 修复 GRPC Client 的 Request 对象在发送 Force-Close 请求时缺少参数的问题;
v1.0.11 - 2019-08-15
新增
- #366 增加
Hyperf\Server\Listener\InitProcessTitleListener监听者来设置进程名称, 同时增加了Hyperf\Framework\Event\OnStart和Hyperf\Framework\Event\OnManagerStart事件;
修复
- #361 修复
db:model命令在 MySQL 8 下不能正常运行; - #369 修复实现
\Serializable接口的自定义异常类不能正确的序列化和反序列化问题; - #384 修复用户自定义的
ExceptionHandler在 JSON RPC Server 下无法正常工作的问题,因为框架默认自动处理了对应的异常; - #370 修复了
Hyperf\GrpcClient\BaseClient的$client属性在流式传输的时候设置了错误的类型的值的问题, 同时增加了默认的content-type为application/grpc+proto,以及允许用户通过自定义Request对象来重写buildRequest()方法;
变更
- #356 #390 优化 aysnc-queue 组件当生成 Job 时,如果 Job 实现了
Hyperf\Contract\CompressInterface,那么 Job 对象会被压缩为一个更小的对象; - #358 只有当
$enableCache为true时才生成注解缓存文件; - #359 #390 为
Collection和Model增加压缩能力,当类实现Hyperf\Contract\CompressInterface可通过compress方法生成一个更小的对象;
v1.0.10 - 2019-08-09
新增
- #321 为 HTTP Server 的 Controller/RequestHandler 参数增加自定义对象类型的数组支持,特别适用于 JSON RPC 下,现在你可以通过在方法上定义
@var Object[]来获得框架自动反序列化对应对象的支持; - #324 增加一个实现于
Hyperf\Contract\IdGeneratorInterface的 ID 生成器NodeRequestIdGenerator; - #336 增加动态代理的 RPC 客户端功能;
- #346 #348 为
hyperf/cache缓存组件增加文件驱动;
变更
- #330 当扫描的 $paths 为空时,不输出扫描信息;
- #328 根据 Composer 的 PSR-4 定义的规则加载业务项目;
- #329 优化 JSON RPC 服务端和客户端的异常消息处理;
- #340 为
make函数增加索引数组的传参方式; - #349 重命名下列类,修正由于拼写错误导致的命名错误;
| 原类名 | 修改后的类名 |
|---|---|
| Hyperf\Database\Commands\Ast\ModelUpdateVistor | Hyperf\Database\Commands\Ast\ModelUpdateVisitor |
| Hyperf\Di\Aop\ProxyClassNameVistor | Hyperf\Di\Aop\ProxyClassNameVisitor |
| Hyperf\Di\Aop\ProxyCallVistor | Hyperf\Di\Aop\ProxyCallVisitor |
修复
- #325 优化 RPC 服务注册时会多次调用 Consul Services 的问题;
- #332 修复
Hyperf\Tracer\Middleware\TraceMiddeware在新版的 openzipkin/zipkin 下的类型约束错误; - #333 修复
Redis::delete()方法在 5.0 版不存在的问题; - #334 修复向阿里云 ACM 配置中心拉取配置时,部分情况下部分配置无法更新的问题;
- #337 修复当 Header 的 key 为非字符串类型时,会返回 500 响应的问题;
- #338 修复
ProviderConfig::load在遇到重复 key 时会导致在深度合并时将字符串转换成数组的问题;
v1.0.9 - 2019-08-03
新增
修复
- #300 让 AsyncQueue 的消息于子协程内来进行处理,修复
attempts参数与实际重试次数不一致的问题; - #305 修复
Hyperf\Utils\Arr::set方法的$key参数不支持int个null的问题; - #312 修复
Hyperf\Amqp\BeforeMainServerStartListener监听器的优先级错误的问题; - #315 修复 ETCD 配置中心在 Worker 进程重启后或在自定义进程内无法使用问题;
- #318 修复服务会持续注册到服务中心的问题;
变更
- #323 强制转换
Cacheable和CachePut注解的$ttl属性为int类型;
v1.0.8 - 2019-07-31
新增
变更
修复
- #271 修复了 AOP 在
classes只会策略下配置同一个类的多个方法只会实现第一个方法的代理方法的问题; - #285 修复了 AOP 在匿名类下生成节点存在丢失的问题;
- #286 自动
rollback没有commit或rollback的 MySQL 连接; - #292 修复了
Request::header方法的$default参数无效的问题; - #293 修复了
Arr::get方法的$key参数不支持intandnull传值的问题;
v1.0.7 - 2019-07-26
修复
v1.0.6 - 2019-07-24
新增
- #203 #236 #247 #252 增加视图组件,支持 Blade 引擎和 Smarty 引擎;
- #203 增加 Task 组件,适配 Swoole Task 机制;
- #245 增加 TaskWorkerStrategy 和 WorkerStrategy 两种定时任务调度策略.
- #251 增加用协程上下文作为储存的缓存驱动;
- #254 增加
RequestMapping::$methods对数组传值的支持, 现在可以通过@RequestMapping(methods={"GET"})和@RequestMapping(methods={RequestMapping::GET})两种新的方式定义方法; - #255 控制器返回
Hyperf\Utils\Contracts\Arrayable会自动转换为 Response 对象, 同时对返回字符串的响应对象增加text/plainContent-Type; - #256 如果
Hyperf\Contract\IdGeneratorInterface存在容器绑定关系, 那么json-rpc客户端会根据该类自动生成一个请求 ID 并储存在 Request attribute 里,同时完善了JSON RPC在 TCP 协议下的服务注册及健康检查;
变更
修复
- #235 为
grpc-server增加了默认的错误处理器,防止错误抛出. - #240 优化了 OnPipeMessage 事件的触发,修复会被多个监听器获取错误数据的问题;
- #257 修复了在某些环境下无法获得内网 IP 的问题;
v1.0.5 - 2019-07-17
新增
变更
- #195 变更
retry()函数的$times参数的行为意义, 表示重试的次数而不是执行的次数; - #198 优化
Hyperf\Di\Container的has()方法, 当传递一个不可实例化的示例(如接口)至$container->has($interface)方法时,会返回false; - #199 当生产 AMQP 消息失败时,会自动重试一次;
- #200 通过 Git 打包项目的部署包时,不再包含
tests文件夹;
修复
- #176 修复
LengthAwarePaginator::nextPageUrl()方法返回值的类型约束; - #188 修复 Guzzle Client 的代理设置不生效的问题;
- #211 修复 RPC Client 存在多个时会被最后一个覆盖的问题;
- #212 修复 Guzzle Client 的
ssl_key和cert配置项不能正常工作的问题;
v1.0.4 - 2019-07-08
新增
- #140 支持 Swoole v4.4.0.
- #152 数据库连接在低使用率时连接池会自动释放连接
- #163 constants 组件的
AbstractConstants::__callStatic支持自定义参数
变更
- #124
DriverInterface::push增加$delay参数用于设置延迟时间, 同时DriverInterface::delay将标记为弃用的,将于 1.1 版本移除 - #125 更改
config()函数的$default参数的默认值为null.
修复
- #110 #111 修复
Redis::select无法正常切换数据库的问题 - #131 修复
middlewares配置在Router::addGroup下无法正常设置的问题 - #132 修复
request->hasFile判断条件错误的问题 - #135 修复
response->redirect在调整外链时无法正确生成链接的问题 - #139 修复 ConsulAgent 的 URI 无法自定义设置的问题
- #148 修复当
migrates文件夹不存在时无法生成迁移模板的问题 - #169 修复处理请求时没法正确处理数组类型的参数
- #170 修复当路由不存在时 WebSocket Server 无法正确捕获异常的问题
移除
- #131 移除
Routeroptions里的server参数
v1.0.3 - 2019-07-02
新增
- #48 增加 WebSocket 协程客户端及服务端
- #51 增加了
enableCache参数去控制DefinitionSource是否启用注解扫描缓存 - #61 通过
db:model命令创建模型时增加属性类型 - #65 模型缓存增加 JSON 格式支持
变更
- #46 移除了
hyperf/di,hyperf/commandandhyperf/dispatcher组件对hyperf/framework组件的依赖
修复
- #45 修复当引用了
hyperf/websocket-server组件时有可能会导致 HTTP Server 启动失败的问题 - #55 修复方法级别的
@Middleware注解可能会被覆盖的问题 - #73 修复
db:model命令对短属性处理不正确的问题 - #88 修复当控制器存在多层文件夹时生成的路由可能不正确的问题
- #101 修复常量不存在
@Message注解时会报错的问题
v1.0.2 - 2019-06-25
新增
修复
- 修复了 HTTP Server 会被 WebSocket Server 影响的问题(WebSocket Server 尚未发布);
- 修复了代理类部分注解没有生成的问题;
- 修复了数据库连接池在单测环境下会无法获取连接的问题;
- 修复了 co-phpunit 在某些情况下不能按预期运行的问题;
- 修复了模型事件
creating,updating… 运行与预期不一致的问题; - 修复了
flushContext方法在单测环境下不能按预期运行的问题;
