升级说明

未匹配的标注

升级指南

升级到 6.0.0 (从 5.8)

Lumen 6.0 是维护式发行(例行发布),其目的是将底层Laravel包升级到6.0系列。在你开始升级你的Lumen程序之前,你应该先看看Laravel 6.0的 升级方案 , 并针对你所在使用的Laravel部件,一一相应更改。

当你对应用程序做好了必要的调整后,你可以在 composer.json 文件中升级 Lumen 框架依赖项,然后运行 composer update 命令。

"laravel/lumen-framework": "^6.0"

升级至 5.8.0 (从5.7)

Lumen 5.8 是维护式发行(例行发布),其目的是将底层Laravel包升级到5.8系列。在你开始升级你的Lumen程序之前,你应该先看看Laravel 5.8的 升级方案 , 并针对你所在使用的Laravel部件,一一相应更改。

当你对应用程序做好了必要的调整后,你可以在 composer.json 文件中升级 Lumen 框架依赖项,然后运行 composer update 命令。

"laravel/lumen-framework": "5.8.*"

环境变量

Lumen 5.8 使用了最新的 vlucas/phpdotenv 库。 你需要更改在 bootstrap/app.php 文件顶部加载环境变量的代码,如下:

(new Laravel\Lumen\Bootstrap\LoadEnvironmentVariables(
    dirname(__DIR__)
))->bootstrap();

其次, 你应该升级你的 composer.json 里面的依赖包,代码如下:

"vlucas/phpdotenv": "^3.3"

升级到 5.7.0 (从 5.6)

Lumen 5.7 是维护式发行(例行发布),其目的是将底层 Laravel 包升级到5.7系列。在你开始升级你的 Lumen 程序之前,你应该先看看 Laravel 5.7的 升级方案 ,并针对你所在使用的 Laravel 部件,一一相应更改。

当你对应用程序做好了必要的调整后,你可以在 composer.json 文件中升级 Lumen 框架依赖项,然后运行 composer update 命令。

"laravel/lumen-framework": "5.7.*"

升级到 5.6.0 (从 5.5)

Lumen 5.6 是维护式发行(例行发布),其目的是将底层 Laravel 包升级到 5.6 系列。在你开始升级你的 Lumen 程序之前,你应该先看看 Laravel 5.6 的 升级方案 ,并针对你所在使用的 Laravel 部件,一一相应更改。

当你对应用程序做好了必要的调整后,你可以在 composer.json 文件中升级 Lumen 框架依赖项,然后运行 composer update 命令。

"laravel/lumen-framework": "5.6.*"

升级到 5.5.0(从5.4)

Lumen 5.5 是维护式发行(例行发布),其目的是将底层 Laravel 包升级到 5.5 系列。在你开始升级你的 Lumen 程序之前,你应该先看看 Laravel 5.5 的 升级方案 ,并针对你所在使用的 Laravel 部件,一一相应更改。

当你对应用程序做好了必要的调整后,你可以在 composer.json 文件中升级 Lumen 框架依赖项,然后运行 composer update 命令。

"laravel/lumen-framework": "5.5.*"

升级引导文件

在 Laravel 5.5 中,服务容器 (Service Container) 实现了 PSR-11 接口,这会导致当尝试使用服务容器作为路由代理(router proxy)时,与路由的 get 函数的冲突。因此,需要更新 bootstrap/app.php 文件,以便只传递一个 Router 实例给 routes.php 文件。在 bootstrap/app.php 底部附近,调整 routes.php 文件的包含内容,使其如下所示:

$app->router->group([
    'namespace' => 'App\Http\Controllers',
], function ($router) {
    require __DIR__.'/../routes/web.php';
});

更新路由文件

更新 bootstrap/app.php 文件后,应更新 routes/web.php 文件以使用 $router 变量而不是 $app 变量:

$router->get('/hello', function () {
    return 'Hello World';
});

从5.3升级到5.4.0

Lumen 5.4 作为一个维护版本,将底层的 Laravel 包升级到 5.4 版本系列。在将应用程序升级到 Lumen 5.4 之前,您应该查看 Laravel 5.4 升级指南,并根据您正在使用的 Laravel 组件对应用程序进行适当的更改。

对应用程序进行必要的调整后,可以在 composer.json 文件中升级 Lumen 框架依赖项,并运行 composer update 命令:

"laravel/lumen-framework": "5.4.*"

服务提供者中的请求

如果以前在应用程序的某个服务提供者中访问当前请求,则应重构代码以改用中间件。

从5.2升级到5.3.0

Lumen 5.3 不会改变框架的结构。相反,它作为一个维护版本,将底层的 Laravel 包升级到 5.3 版本系列。在将应用程序升级到 Lumen 5.3 之前,您应该查看Laravel 5.3 升级指南,并根据您正在使用的 Laravel 组件对应用程序进行适当的更改。

对应用程序进行必要的调整后,可以在 composer.json 文件中升级 Lumen 框架依赖项,并运行 composer update 命令:

"laravel/lumen-framework": "5.3.*"

从5.1升级到5.2.0

Lumen 5.2 代表了一种更为果断的转向,将重点放在无状态 API 上。因此,会话已从框架中删除。如果您想使用这些功能,您应该将 Lumen 5.1 应用程序升级到 Laravel 5.2。

将 Lumen 应用程序升级到完整的 Laravel 框架主要包括将路由和类复制到新的 Laravel 安装中。由于 Laravel 和 Lumen 共享许多相同的组件,所以类不需要任何修改。

更新依赖项

更新 composer.json 文件以指向 laravel/lumen framework 5.2.*vlucas/phpdotenv~2.2

Bootstrap

bootstrap/app.php 文件中,需要修改对以下对象的 Dotenv::load(…) 方法调用:

try {
    (new Dotenv\Dotenv(__DIR__.'/../'))->load();
} catch (Dotenv\Exception\InvalidPathException $e) {
    //
}

应用程序

Lumen 不再实现 illume\Contracts\Foundation\Application 契约。应更新任何 Application 契约类型提示,以直接引用 Laravel\Lumen\Application 类。

身份验证

由于 Lumen 不再支持会话,身份验证完全基于通过 API 令牌或头的无状态身份验证。您应该查看 完整身份验证文档 以了解有关如何使用身份验证系统的更多信息。

集合

Eloquent 下的集合

Eloquent collection 实例现在为以下方法返回一个基集合(illume\Support\collection): pluckkeyszipcollapseflattenflip

密钥保存

slice, chunkreverse 方法现在保留集合上的键。如果不希望这些方法保留键,请对 Collection 实例使用 values 方法。

数据库

MySQL日期

从 MySQL 5.7 开始,0000-00-00 00:00:00 不再被视为有效日期,因为 strict 模式默认启用。将记录插入数据库时,所有时间戳列都应收到有效的默认值。您可以在迁移中使用 useCurrent 方法将时间戳列默认为当前时间戳,或者将时间戳设置为 nullable 以允许 null 值:

$table->timestamp('foo')->nullable();

$table->timestamp('foo')->useCurrent();

$table->nullableTimestamps();

MySQL JSON列类型

当 MySQL 驱动程序使用 json 列时,json 列类型现在创建实际的 JSON 列。如果您不运行 MySQL 5.7 或更高版本,则此列类型对您不可用。相反,在迁移中使用 text 列类型。

Eloquent

日期转换

在模型或模型集合上调用 toArray 时,添加到 $casts 属性中的 datedatetime 属性都将转换为字符串。这使得日期转换与在 $dates 数组中指定的日期一致。

全局作用域

为了使用方便,我们已经重写全局作用域的实现。因此,全局作用域不再需要 remove 方法,所以你应该在写了该方法的全局作用域中将其移除。

如果你曾在 Eloquent 查询构造器上调用过 getQuery 方法来访问底层的查询构造实例,现在你得改为调用 toBase 方法。

无论您曾出于任何原因只要调用过 remove 方法,现在都得修改为调用 $eloquentBuilder->withoutGlobalScope($scope)

在 Eloquent 查询构造器中,现在新增了 withoutGlobalScopewithoutGlobalScopes 方法,之前所有调用了 $model->removeGlobalScopes($builder) 的地方现在都得修改为 $builder->withoutGlobalScopes()

主键

默认情况下,Eloquent 会默认主键为整型,并自动将其强制为整型来处理。但如果你的主键并不是整型,请在 Eloquent 模型上重写 $incrementing 属性设置为 false

/**
 * 标示 ID 主键是否自动增长。
 *
 * @var bool
 */
public $incrementing = true;

异常处理

你的 App\Exceptions\Handler 类的 $dontReport 属性应该更新为至少包含以下的异常类型:

use Illuminate\Validation\ValidationException;
use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use Symfony\Component\HttpKernel\Exception\HttpException;

/**
 * 不应反馈的异常类型列表。
 *
 * @var array
 */
protected $dontReport = [
    AuthorizationException::class,
    HttpException::class,
    ModelNotFoundException::class,
    ValidationException::class,
];

IronMQ

IronMQ 队列驱动已经移植到它自己的包中,不再与核心框架一起提供。

http://github.com/LaravelCollective/iron-queue

存储

如果你使用了 Laravel 的 Flysystem 文件系统集成,你将需要将filesystem注册绑定。请将以下代码添加到 bootstrap/app.php文件中:

$app->singleton('filesystem', function ($app) {
    return $app->loadComponent(
        'filesystems',
        Illuminate\Filesystem\FilesystemServiceProvider::class,
        'filesystem'
    );
});

验证

ValidatesRequests trait 已经合并到 ProvidesConvenienceMethods trait 里,并在 Lumen 的基类控制器中使用。

如果你先前在基类控制器之外使用了 ValidatesRequests trait ,你可以 从 5.1 分支中拷贝它或使用完整的 ProvidesConvenienceMethods trait。

测试

DatabaseMigrationsDatabaseTransactions traits 已经从原本的 Illuminate\Foundation\Testing\DatabaseMigrationsIlluminate\Foundation\Testing\DatabaseTransactions 移到了新位置。 更新你的测试代码,从中导入新的命名空间:

<?php

use Laravel\Lumen\Testing\DatabaseMigrations;
use Laravel\Lumen\Testing\DatabaseTransactions;

class ExampleTest extends TestCase
{
    use DatabaseMigrations;
}

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
上一篇 下一篇
Summer
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
贡献者:5
讨论数量: 0
发起讨论 只看当前版本


暂无话题~