从6.x升级到7.0.0

Lumen 7.0充当维护版本,以将基础Laravel软件包升级到7.x版本系列。在将应用程序升级到Lumen 7.0之前,您应该查看Laravel 7.0 升级指南,并根据所使用的Laravel组件对应用程序进行任何适用的更改。
对应用程序进行必要的调整后,可以在文件中升级Lumen框架依赖项并运行以下命令:composer.json``composer update

  1. "laravel/lumen-framework": "^7.0"

Symfony 5相关升级

Lumen 7使用了Symfony组件的5.x系列。为了适应此升级,需要对应用程序进行一些细微更改。
首先,应用程序类的reportrender方法应接受接口实例,而不是实例:App\Exceptions\Handler``Throwable``Exception

  1. use Throwable;
  2. public function report(Throwable $exception);
  3. public function render($request, Throwable $exception);

从5.8升级到6.0.0

Lumen 6.0充当维护版本,可将基础Laravel软件包升级到6.0版本系列。在将应用程序升级到Lumen 6.0之前,您应该查看Laravel 6.0 升级指南,并根据所使用的Laravel组件对应用程序进行任何适用的更改。
对应用程序进行必要的调整后,可以在文件中升级Lumen框架依赖项并运行以下命令:composer.json``composer update

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

从5.7升级到5.8.0

Lumen 5.8充当维护版本,将基础Laravel软件包升级到5.8版本系列。在将应用程序升级到Lumen 5.8之前,您应该查看Laravel 5.8 升级指南,并根据所使用的Laravel组件对应用程序进行任何适用的更改。
对应用程序进行必要的调整后,可以在文件中升级Lumen框架依赖项并运行以下命令:composer.json``composer update

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

环境变量

Lumen 5.8利用了该库的最新实现。您需要将顶部加载文件中的环境变量的代码更改为以下代码:vlucas/phpdotenv``bootstrap/app.php

  1. (new Laravel\Lumen\Bootstrap\LoadEnvironmentVariables(
  2. dirname(__DIR__)
  3. ))->bootstrap();

此外,您需要将自己的依赖项更新为新版本:composer.json

  1. "vlucas/phpdotenv": "^3.3"

从5.6升级到5.7.0

Lumen 5.7作为维护版本将基础Laravel软件包升级到5.7版本系列。在将应用程序升级到Lumen 5.7之前,您应该查看Laravel 5.7 升级指南,并根据所使用的Laravel组件对应用程序进行任何适用的更改。
对应用程序进行必要的调整后,可以在文件中升级Lumen框架依赖项并运行以下命令:composer.json``composer update

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

从5.5升级到5.6.0

Lumen 5.6作为维护版本将基础Laravel软件包升级到5.6版本系列。在将应用程序升级到Lumen 5.6之前,您应该查看Laravel 5.6 升级指南,并根据所使用的Laravel组件对应用程序进行任何适用的更改。
对应用程序进行必要的调整后,可以在文件中升级Lumen框架依赖项并运行以下命令:composer.json``composer update

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

从5.4升级到5.5.0

Lumen 5.5作为维护版本将基础Laravel软件包升级到5.5版本系列。在将应用程序升级到Lumen 5.5之前,您应该查看Laravel 5.5 升级指南,并根据所使用的Laravel组件对应用程序进行任何适用的更改。
对应用程序进行必要的调整后,可以在文件中升级Lumen框架依赖项并运行以下命令:composer.json``composer update

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

更新引导文件

在Laravel 5.5中,服务容器实现PSR-11接口,从而get在尝试将服务容器用作路由器代理时与路由器的方法产生冲突。因此,文件需要更新以仅将实例传递给文件。在文件底部附近,调整文件的包含形式,如下所示:bootstrap/app.php``Router``routes.php``bootstrap/app.php``routes.php

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

更新路线文件

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

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

从5.3升级到5.4.0

Lumen 5.4用作维护版本,以将基础的Laravel软件包升级到5.4版本系列。在将应用程序升级到Lumen 5.4之前,您应该查看Laravel 5.4 升级指南,并根据所使用的Laravel组件对应用程序进行任何适用的更改。
对应用程序进行必要的调整后,可以在文件中升级Lumen框架依赖项并运行以下命令:composer.json``composer update

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

服务提供商中的请求

如果您以前在应用程序的服务提供商之一中访问当前请求,则应重构代码以使用中间件。

从5.2升级到5.3.0

Lumen 5.3不会更改框架的结构。而是将其用作维护版本,以将基本的Laravel软件包升级到5.3版本系列。在将应用程序升级到Lumen 5.3之前,您应该查看Laravel 5.3 升级指南,并根据所使用的Laravel组件对应用程序进行任何适用的更改。
对应用程序进行必要的调整后,可以在文件中升级Lumen框架依赖项并运行以下命令:composer.json``composer update

  1. "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/app.php``Dotenv::load(...)

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

应用

Lumen 不再执行合同。任何合同类型提示都应更新以直接引用该类。Illuminate\Contracts\Foundation\Application``Application``Laravel\Lumen\Application

认证方式

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

馆藏

雄辩的基本收藏

能言善辩的收集实例现在返回一个基本集()对以下方法:,,,,,。Illuminate\Support\Collection``pluck``keys``zip``collapse``flatten``flip

密钥保存

slicechunkreverse现在的方法对收集保存键。如果您不希望这些方法保留键,请valuesCollection实例上使用该方法。

数据库

MySQL日期

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

  1. $table->timestamp('foo')->nullable();
  2. $table->timestamp('foo')->useCurrent();
  3. $table->nullableTimestamps();

MySQL JSON列类型

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

雄辩

日期演员表

在模型或模型集合上调用时,已经或将添加到$casts属性的任何属性现在将转换为字符串。这使日期转换转换与数组中指定的日期一致。date``datetime``toArray``$dates

全球范围

全局范围实现已被重新编写为更易于使用。您的全局范围不再需要一种remove方法,因此可以将其从您编写的任何全局范围中删除。
如果我们正在调用getQueryEloquent查询构建器以访问基础查询构建器实例,则现在应调用toBase
如果remove出于任何原因直接调用该方法,则应将此调用更改为。$eloquentBuilder->withoutGlobalScope($scope)
新的方法withoutGlobalScopewithoutGlobalScopes已被添加到雄辩查询生成器。对的任何调用都可以更改为。$model->removeGlobalScopes($builder)``$builder->withoutGlobalScopes()

主键

默认情况下,Eloquent假定您的主键是整数,并将自动将其转换为整数。对于不是整数的任何主键,应将$incrementingEloquent模型上的属性覆盖为false

  1. /**
  2. * Indicates if the IDs are auto-incrementing.
  3. *
  4. * @var bool
  5. */
  6. public $incrementing = true;

异常处理

您的类的属性应更新为至少包括以下异常类型:App\Exceptions\Handler``$dontReport

  1. use Illuminate\Validation\ValidationException;
  2. use Illuminate\Auth\Access\AuthorizationException;
  3. use Illuminate\Database\Eloquent\ModelNotFoundException;
  4. use Symfony\Component\HttpKernel\Exception\HttpException;
  5. /**
  6. * A list of the exception types that should not be reported.
  7. *
  8. * @var array
  9. */
  10. protected $dontReport = [
  11. AuthorizationException::class,
  12. HttpException::class,
  13. ModelNotFoundException::class,
  14. ValidationException::class,
  15. ];

IronMQ

IronMQ队列驱动程序已移至其自己的程序包,并且不再随核心框架一起提供。
http://github.com/LaravelCollective/iron-queue

存储

如果您使用Laravel的Flysystem集成,则需要注册filesystem绑定。将以下代码添加到您的:bootstrap/app.php

  1. $app->singleton('filesystem', function ($app) {
  2. return $app->loadComponent(
  3. 'filesystems',
  4. Illuminate\Filesystem\FilesystemServiceProvider::class,
  5. 'filesystem'
  6. );
  7. });

验证方式

ValidatesRequests特征已合并到ProvidesConvenienceMethodsLumen 的基本控制器使用的特征中。
如果您以前ValidatesRequests在BaseController之外使用过特征,则可以从5.1分支复制它或使用完整ProvidesConvenienceMethods特征。

测验

DatabaseMigrationsDatabaseTransactions特点已经从移动和到新的位置。更新测试以导入新的名称空间:Illuminate\Foundation\Testing\DatabaseMigrations``Illuminate\Foundation\Testing\DatabaseTransactions

  1. <?php
  2. use Laravel\Lumen\Testing\DatabaseMigrations;
  3. use Laravel\Lumen\Testing\DatabaseTransactions;
  4. class ExampleTest extends TestCase
  5. {
  6. use DatabaseMigrations;
  7. }