docs/en/upgrade/2.1.md
Hyperf framework to run on top of Swoole or Swow.Swow is temporarily a preview version, please use it with caution.
Simply change hyperf/* in composer.json to 2.1.*.
{
"require": {
"php": ">=7.3",
"ext-json": "*",
"ext-openssl": "*",
"ext-pdo": "*",
"ext-pdo_mysql": "*",
"ext-redis": "*",
"ext-swoole": ">=4.5",
"hyperf/async-queue": "2.1.*",
"hyperf/cache": "2.1.*",
"hyperf/command": "2.1.*",
"hyperf/config": "2.1.*",
"hyperf/constants": "2.1.*",
"hyperf/contract": "2.1.*",
"hyperf/database": "2.1.*",
"hyperf/db-connection": "2.1.*",
"hyperf/di": "2.1.*",
"hyperf/dispatcher": "2.1.*",
"hyperf/event": "2.1.*",
"hyperf/exception-handler": "2.1.*",
"hyperf/framework": "2.1.*",
"hyperf/guzzle": "2.1.*",
"hyperf/http-server": "2.1.*",
"hyperf/logger": "2.1.*",
"hyperf/model-cache": "2.1.*",
"hyperf/pool": "2.1.*",
"hyperf/process": "2.1.*",
"hyperf/redis": "2.1.*",
"hyperf/server": "2.1.*",
"hyperf/utils": "2.1.*"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^2.14",
"hyperf/devtool": "2.1.*",
"hyperf/testing": "2.1.*",
"mockery/mockery": "^1.0",
"phpstan/phpstan": "^0.12.18",
"swoole/ide-helper": "dev-master",
"symfony/var-dumper": "^5.1"
}
}
After that, you only need to execute composer update -o, and the upgrade can be completed normally.
Because Hyperf needs to use class_map generated by composer since 2.0, which requires users to use -o for optimization every time they update dependencies, but many users never have this habit.
Therefore, we recommend adding corresponding configuration to composer.json to meet this need.
{
"config": {
"optimize-autoloader": true,
"sort-packages": true
}
}
The class Hyperf\Server\SwooleEvent has been renamed to Hyperf\Server\Event in 2.1, so we need to modify the corresponding code in the server.php configuration.
SwooleEvent will be officially removed in 3.0, please change it to Event as soon as possible
<?php
declare(strict_types=1);
use Hyperf\Server\Event;
use Hyperf\Server\Server;
return [
'mode' => SWOOLE_BASE,
'servers' => [
[
'name' => 'http',
'type' => Server::SERVER_HTTP,
'host' => '0.0.0.0',
'port' => 9501,
'sock_type' => SWOOLE_SOCK_TCP,
'callbacks' => [
Event::ON_REQUEST => [Hyperf\HttpServer\Server::class, 'onRequest'],
],
],
],
'callbacks' => [
Event::ON_BEFORE_START => [Hyperf\Framework\Bootstrap\ServerStartCallback::class, 'beforeStart'],
Event::ON_WORKER_START => [Hyperf\Framework\Bootstrap\WorkerStartCallback::class, 'onWorkerStart'],
Event::ON_PIPE_MESSAGE => [Hyperf\Framework\Bootstrap\PipeMessageCallback::class, 'onPipeMessage'],
Event::ON_WORKER_EXIT => [Hyperf\Framework\Bootstrap\WorkerExitCallback::class, 'onWorkerExit'],
],
];
Because the component hyperf/paginator has been removed from the hyperf/database dependency. Therefore, students who use the pager in the database also need to introduce the hyperf/paginator component.
If you use the doctrine/dbal component, you need to upgrade to the ^3.0 version.
The doctrine/common component has a dependency conflict with hyperf/utils. So this component needs to be removed from composer.json.
# remove component
composer remove doctrine/common
# update
composer update "hyperf/*" -o