返回介绍

2.1 升级指南

发布于 2021-04-03 03:37:34 字数 7615 浏览 1188 评论 0 收藏 0

  • 2.1 版本主要增加了底层驱动 hyperf/engine,允许 Hyperf 框架跑在 SwooleSwow 之上。
  • PHP 最低版本由 7.2 修改为 7.3

Swow 暂为预览版本,请谨慎使用。

修改 Hyperf 组件版本

直接将 composer.json 中的 hyperf/* 统一修改为 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"
    }
}

后面只需要执行 composer update -o,就可以正常完成升级了。

增加 optimize-autoloader 配置

因为 Hyperf 自从 2.0 开始,需要使用到 composer 生成的 class_map,这就要求用户每次更新依赖都要使用 -o 进行优化,但很多用户从来没有这个习惯。 于是我们建议在 composer.json 中增加对应配置,以满足这个需要。

{
    "config": {
        "optimize-autoloader": true,
        "sort-packages": true
    }
}

修改 SwooleEvent

Hyperf\Server\SwooleEvent2.1 中已经更名为 Hyperf\Server\Event,所以我们需要在 server.php 配置中修改对应代码。

SwooleEvent 会在 3.0 中正式被移除,请尽快修改为 Event

<?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'],
    ],
];

分页器

因为组件 hyperf/paginator 已从 hyperf/database 依赖中移除。所以在 database 中使用到分页器的同学,还需要额外引入 hyperf/paginator 组件。

修改 DBAL 版本

倘若使用了 doctrine/dbal 组件,则需要升级到 ^3.0 版本。

移除组件 doctrine/common

doctrine/common 组件与 hyperf/utils 存在依赖冲突。故需要从 composer.json 中移除此组件。

# 移除组件
composer remove doctrine/common
# 更新
composer update "hyperf/*" -o

注意事项

  • 尽量不要将老项目的引擎修改为 Swow,如果想要使用 Swow,请尽量在新项目中尝试。因为 Swow 并不是 Swoole 的替代品,所以并不是所有 Swoole 的场景,都能在 Swow 中找到对应的替代方案。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文