- 从6.x升级到7.0.0
- 从5.8升级到6.0.0
- 从5.7升级到5.8.0
- 从5.6升级到5.7.0
- 从5.5升级到5.6.0
- 从5.4升级到5.5.0
- 从5.3升级到5.4.0
- 从5.2升级到5.3.0
- 从5.1升级到5.2.0
从6.x升级到7.0.0
Lumen 7.0充当维护版本,以将基础Laravel软件包升级到7.x版本系列。在将应用程序升级到Lumen 7.0之前,您应该查看Laravel 7.0 升级指南,并根据所使用的Laravel组件对应用程序进行任何适用的更改。
对应用程序进行必要的调整后,可以在文件中升级Lumen框架依赖项并运行以下命令:composer.json``composer update
"laravel/lumen-framework": "^7.0"
Symfony 5相关升级
Lumen 7使用了Symfony组件的5.x系列。为了适应此升级,需要对应用程序进行一些细微更改。
首先,应用程序类的report
和render
方法应接受接口实例,而不是实例:App\Exceptions\Handler``Throwable``Exception
use Throwable;
public function report(Throwable $exception);
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
"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
"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.6升级到5.7.0
Lumen 5.7作为维护版本将基础Laravel软件包升级到5.7版本系列。在将应用程序升级到Lumen 5.7之前,您应该查看Laravel 5.7 升级指南,并根据所使用的Laravel组件对应用程序进行任何适用的更改。
对应用程序进行必要的调整后,可以在文件中升级Lumen框架依赖项并运行以下命令:composer.json``composer update
"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
"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
"laravel/lumen-framework": "5.5.*"
更新引导文件
在Laravel 5.5中,服务容器实现PSR-11接口,从而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组件对应用程序进行任何适用的更改。
对应用程序进行必要的调整后,可以在文件中升级Lumen框架依赖项并运行以下命令:composer.json``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组件对应用程序进行任何适用的更改。
对应用程序进行必要的调整后,可以在文件中升级Lumen框架依赖项并运行以下命令:composer.json``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/app.php``Dotenv::load(...)
try {
(new Dotenv\Dotenv(__DIR__.'/../'))->load();
} catch (Dotenv\Exception\InvalidPathException $e) {
//
}
应用
Lumen 不再执行合同。任何合同类型提示都应更新以直接引用该类。Illuminate\Contracts\Foundation\Application``Application``Laravel\Lumen\Application
认证方式
由于Lumen不再支持会话,因此身份验证完全基于通过API令牌或标头进行的无状态身份验证。您应该查看完整的身份验证文档,以获取有关如何使用身份验证系统的更多信息。
馆藏
雄辩的基本收藏
能言善辩的收集实例现在返回一个基本集()对以下方法:,,,,,。Illuminate\Support\Collection``pluck``keys``zip``collapse``flatten``flip
密钥保存
的slice
,chunk
和reverse
现在的方法对收集保存键。如果您不希望这些方法保留键,请values
在Collection
实例上使用该方法。
数据库
MySQL日期
从MySQL 5.7开始,不再被视为有效日期,因为默认情况下启用了模式。当您将记录插入数据库时,所有时间戳列都应收到有效的默认值。您可以在迁移中使用该方法将timestamp列默认为当前时间戳,或者可以使timestamp 允许值:0000-00-00 00:00:00``strict``useCurrent``nullable``null
$table->timestamp('foo')->nullable();
$table->timestamp('foo')->useCurrent();
$table->nullableTimestamps();
MySQL JSON列类型
json
现在,由MySQL驱动程序使用时,列类型会创建实际的JSON列。如果您未运行MySQL 5.7或更高版本,则此列类型将不可用。而是text
在迁移中使用列类型。
雄辩
日期演员表
在模型或模型集合上调用时,已经或将添加到$casts
属性的任何属性现在将转换为字符串。这使日期转换转换与数组中指定的日期一致。date``datetime``toArray``$dates
全球范围
全局范围实现已被重新编写为更易于使用。您的全局范围不再需要一种remove
方法,因此可以将其从您编写的任何全局范围中删除。
如果我们正在调用getQuery
Eloquent查询构建器以访问基础查询构建器实例,则现在应调用toBase
。
如果remove
出于任何原因直接调用该方法,则应将此调用更改为。$eloquentBuilder->withoutGlobalScope($scope)
新的方法withoutGlobalScope
和withoutGlobalScopes
已被添加到雄辩查询生成器。对的任何调用都可以更改为。$model->removeGlobalScopes($builder)``$builder->withoutGlobalScopes()
主键
默认情况下,Eloquent假定您的主键是整数,并将自动将其转换为整数。对于不是整数的任何主键,应将$incrementing
Eloquent模型上的属性覆盖为false
:
/**
* Indicates if the IDs are auto-incrementing.
*
* @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;
/**
* A list of the exception types that should not be reported.
*
* @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
特征已合并到ProvidesConvenienceMethods
Lumen 的基本控制器使用的特征中。
如果您以前ValidatesRequests
在BaseController之外使用过特征,则可以从5.1分支复制它或使用完整ProvidesConvenienceMethods
特征。
测验
在DatabaseMigrations
和DatabaseTransactions
特点已经从移动和到新的位置。更新测试以导入新的名称空间:Illuminate\Foundation\Testing\DatabaseMigrations``Illuminate\Foundation\Testing\DatabaseTransactions
<?php
use Laravel\Lumen\Testing\DatabaseMigrations;
use Laravel\Lumen\Testing\DatabaseTransactions;
class ExampleTest extends TestCase
{
use DatabaseMigrations;
}