hyperf/CHANGELOG-3.0.md
Deeka Wong 781b0677dc
Support Swow for hyperf/signal (#5070)
Co-authored-by: 李铭昕 <715557344@qq.com>
2022-09-05 14:31:26 +08:00

13 KiB
Raw Blame History

v3.0.0 - TBD

  • #4238 Upgraded the minimum php version to ^8.0 for all components;

BC breaks

  • 框架移除了 @Annotation 的支持,全部使用 PHP8 原生注解 Attribute,更新前务必检查项目中,是否已经全部替换为 Attribute

可以执行以下脚本,将 Doctrine Annotations 转化为 PHP8 Attributes.

注意: 这个脚本只能在 2.2 版本下执行

composer require hyperf/code-generator
php bin/hyperf.php code:generate -D app
  • 升级模型脚本

因为模型基类增加了成员变量的类型支持,所以需要使用以下脚本,将其升级为新版本。

composer require hyperf/code-generator
php vendor/bin/regenerate-models.php $PWD/app/Model
  • 框架为类库增加了更多的类型限制,所以从 2.2 更新到 3.0 版本时,需要跑一遍静态检测。
composer analyse
  • 框架根据 GRPC 规范修改了 GRPC Server 返回的 Http status 固定为为 200 GRPC Server 返回对应的 status code,更新前如果有使用 GRPC,请务必将相关的服务升级到 3.x 版本

Dependencies Upgrade

  • Upgraded php-amqplib/php-amqplib to ^3.1;
  • Upgraded phpstan/phpstan to ^1.0;
  • Upgraded mix/redis-subscribe to mix/redis-subscriber:^3.0
  • Upgraded psr/simple-cache to ^1.0|^2.0|^3.0
  • Upgraded monolog/monolog to ^2.7|^3.1
  • Upgraded league/flysystem to ^1.0|^2.0|^3.0

Added

  • #4196 Added Hyperf\Amqp\IO\IOFactory which used to create amqp io by yourself.
  • #4304 Support $suffix for trait Hyperf\Utils\Traits\StaticInstance.
  • #4400 Added $description which used to set command description easily for Hyperf\Command\Command.
  • #4277 Added Hyperf\Utils\IPReader to get local IP.
  • #4497 Added Hyperf\Coordinator\Timer which can be stopped safely.
  • #4523 Support callback conditions for Conditionable::when() and Conditionable::unless().
  • #4663 Make Hyperf\Utils\Stringable implements Stringable.
  • #4700 Support coroutine style server for socketio-server.
  • #4852 Added NullDisableEventDispatcher to disable event dispatcher by default.
  • #4866 #4869 Added Annotation Scene which use scene in FormRequest easily.
  • #4908 Added Db::beforeExecuting() to register a hook which to be run just before a database query is executed.
  • #4909 Added ConsumerMessageInterface::getNums() to change the number of amqp consumer by dynamically.
  • #4918 Added LoadBalancerInterface::afterRefreshed() to register a hook which to be run after refresh nodes.
  • #4992 Added config amqp.enable which used to control amqp consumer whether to start automatically and producer whether to declare automatically.
  • #4994 #5016 Added component hyperf/database-pgsql which you can be used to connect pgsql server.
  • #5007 Support for SSL encrypted connection to Redis.
  • #5046 Added Hyperf\Database\Model\Concerns\HasAttributes::getRawOriginal().
  • #5052 Support parsing IPv6 host.
  • #5601 Added config symfony.event.enable to control whether to use SymfonyEventDispatcher.

Optimized

  • #4147 Optimized code for nacos which you can use http://xxx.com/yyy/ instead of http://xxx.com:8848/ to connect nacos.
  • #4367 Optimized DataFormatterInterface which uses object instead of array as inputs.
  • #4547 Optimized code of Str::contains Str::startsWith and Str::endsWith based on PHP8.
  • #4596 Optimized Hyperf\Context\Context which support coroutineId for set() override() and getOrSet().
  • #4658 The method name is used as the routing path, when the path is null in route annotations.
  • #4668 Optimized class Hyperf\Utils\Str whose methods padBoth padLeft and padRight support multibyte.
  • #4678 Close all another servers when one of them closed.
  • #4688 Added SafeCaller to avoid server shutdown which caused by exceptions.
  • #4715 Adjust the order of injections for controllers to avoid inject null preferentially.
  • #4865 No need to check Redis::isConnected(), because it could be connected defer or reconnected after disconnected.
  • #4874 Use wait instead of parallel for coroutine style tcp server.
  • #4875 Use the original style when regenerating models.
  • #4880 Support ignoreAnnotations for Annotation Reader.
  • #4888 Removed useless Hyperf\Di\ClassLoader::$proxies, because merge it into Composer\Autoload\ClassLoader::$classMap.
  • #4905 Removed the redundant parameters of method Hyperf\Database\Model\Concerns\HasEvents::fireModelEvent().
  • #4949 Removed useless call() from Coroutine::create().
  • #4961 Removed proxy mode from Hyperf\Di\ClassLoader and Optimized Composer::getLoader().
  • #4981 Confirm before proceeding with the action when using ConfirmableTrait, such as migrate command.
  • #5017 Check validity of file descriptor before sending message to it when using socketio-server.
  • #5029 Removed useless method call() from callable function.

Changed

  • #4199 Changed the public property $message to protected for Hyperf\AsyncQueue\Event\Event.
  • #4214 Renamed $circularDependences to $checkCircularDependencies for Dag.
  • #4225 Split hyperf/coordinator from hyperf/utils.
  • #4269 Changed the default priority of listener to 0 from 1.
  • #4345 Renamed Hyperf\Kafka\Exception\ConnectionCLosedException to Hyperf\Kafka\Exception\ConnectionClosedException.
  • #4434 The method Hyperf\Database\Model\Builder::insertOrIgnore will be return affected count.
  • #4495 Changed the default value to null for Hyperf\DbConnection\Db::__connection().
  • #4460 Use ?? instead of ?: for $callback when using Stringable::when().
  • #4502 Use Hyperf\Engine\Channel instead of Hyperf\Coroutine\Channel in hyperf/reactive-x.
  • #4611 Changed return type to void for Hyperf\Event\Contract\ListenerInterface::process().
  • #4669 Changed all annotations which only support PHP >= 8.0.
  • #4678 Support event dispatcher for command by default.
  • #4680 Stop processes which controlled by ProcessManager when server shutdown.
  • #4848 Changed $value.timeout to $options.timeout for CircuitBreaker.
  • #4930 Renamed method AnnotationManager::getFormatedKey() to AnnotationManager::getFormattedKey().
  • #4934 Throw NoNodesAvailableException when cannot select any node from load balancer.
  • #4952 Don't write pid when the settings.pid_file is null when using swow server.
  • #4979 Don't support database commands by default, please require hyperf/devtool or set them in autoload/commands.
  • #5008 Removed array type of Trace Annotation, because don't support array.
  • #5036 Changed grpc server StatsCode and serializeMessage.
  • #5601 Don't use Hyperf\Framework\SymfonyEventDispatcher by default, if you listen symfony events, you must open symfony.event.enable.

Swow Supported

  • #4756 Support hyperf/amqp.
  • #4757 Support Hyperf\Utils\Coroutine\Locker.
  • #4804 Support Hyperf\Utils\WaitGroup.
  • #4808 Replaced Swoole\Coroutine\Channel by Hyperf\Engine\Channel for all components.
  • #4873 Support hyperf/websocket-server.
  • #4917 Support hyperf/load-balancer.
  • #4924 Support TcpServer for hyperf/server.
  • #4984 Support hyperf/retry.
  • #4988 Support hyperf/pool.
  • #4989 Support hyperf/crontab.
  • #4990 Support hyperf/nsq.
  • #5070 Support hyperf/signal.

Removed

  • #4199 Removed deprecated handler Hyperf\AsyncQueue\Signal\DriverStopHandler.
  • #4482 Removed deprecated Hyperf\Utils\Resource.
  • #4487 Removed log warning from cache component when the key is greater than 64 characters.
  • #4596 Removed Hyperf\Utils\Context, please use Hyperf\Context\Context instead.
  • #4623 Removed AliyunOssHook for hyperf/filesystem.
  • #4667 Removed doctrine/annotations, please use PHP8 Attributes.

Deprecated

  • Hyperf\Utils\Contracts\Arrayable will be deprecated, please use Hyperf\Contract\Arrayable instead.
  • Hyperf\AsyncQueue\Message will be deprecated, please use Hyperf\AsyncQueue\JobMessage instead.
  • Hyperf\Di\Container::getDefinitionSource() will be deprecated.

Fixed

  • #4549 Fixed bug that PhpParser::getExprFromValue() does not support assoc array.
  • #4835 Fixed the lost description when using property $description and $signature for hyperf/command.
  • #4851 Fixed bug that prometheus server will not be closed automatically when using command which enable event dispatcher.
  • #4854 Fixed bug that the socket-io client always reconnect when using coroutine style server.
  • #4885 Fixed bug that ProxyTrait::__getParamsMap can not work when using trait alias.
  • #4892 #4895 Fixed bug that RedisAdapter::mixSubscribe cannot work cased by redis prefix when using socketio-server.
  • #4910 Fixed bug that method ComponentTagCompiler::escapeSingleQuotesOutsideOfPhpBlocks() cannot work.
  • #4912 Fixed bug that websocket connection will be closed after 10s when using Swow.
  • #4919 #4921 Fixed bug that rpc connections can't refresh themselves after nodes changed when using rpc-multiplex.
  • #4920 Fixed bug that the routing path is wrong (like //foo) when the routing prefix is end of '/'.
  • #4940 Fixed memory leak caused by an exception which occurred in Parallel.