Laravel 7.7在可变容器支持下发布
Laravel团队昨天发布了v7.7.0,其中包含对可变参数构造函数参数的容器支持,一些新的HTTP客户端功能,一个 rawIndex() Blueprint方法以及7.x分支中的所有最新功能,修复和更改:
对HTTP客户端GET请求的阵列访问支持
DanielMason贡献了ArrayAccess对HTTP客户端get()请求的支持:
Http::get('http://foo.com', ['foo' => 'bar']); Http::assertSent(function (Request $request) { return $request->url() === 'http://foo.com/get?foo=bar' && $request['foo'] === 'bar'; });
HTTP客户端assertSentCount断言
ChristophRumpelassertSentCount 为HTTP客户端贡献了 断言。断言发送的预期请求数很有用:
$this->factory->fake(); $this->factory->assertSentCount(0); $this->factory->post('http://foo.com/form', [ 'name' => 'Taylor', ]); $this->factory->assertSentCount(1); $this->factory->post('http://foo.com/form', [ 'name' => 'Jim', ]); $this->factory->assertSentCount(2);
能够使用“rawIndex”将索引创建为表达式
JonathanReinink贡献了一种 rawIndex 方法,该方法允许将数据库索引创建为表达式:
//前 Schema::create('users', function (Blueprint $table) { $table->id(); $table->string('name'); $table->date('birth_date')->nullable(); $table->timestamps(); }); DB::statement('ALTER TABLE users ADD INDEX birthday_index ((date_format(birth_date, "%m-%d")))'); //后 Schema::create('users', function (Blueprint $table) { $table->id(); $table->string('name'); $table->date('birth_date')->nullable(); $table->timestamps(); $table->rawIndex('(date_format(birth_date, "%m-%d"))', 'birthday_index'); });
可变参数构造函数参数的容器支持
BeauSimensen为可变参数提供了容器支持。这是解决此问题的简单示例:
//前 app()->singleton(Logger::class, MyLogger::class); app()->bind(Firewall::class, function ($c) { return new Firewall( $c->make(Logger::class), ...[ $c->make(NullFilter::class), $c->make(ProfanityFilter::class), $c->make(TooLongFilter::class), ] ); }); //后 app()->singleton(Logger::class, MyLogger::class); app() ->when(Firewall::class) ->needs(Filter::class) ->give([ NullFilter::class, ProfanityFilter::class, TooLongFilter::class, ]);
如请求请求描述中所述,您可以将闭包传递给 give:
app()->singleton(Logger::class, MyLogger::class); app() ->when(Firewall::class) ->needs(Filter::class) ->give(function ($c) { return [ $c->make(NullFilter::class), $c->make(ProfanityFilter::class), $c->make(TooLongFilter::class), ]; });
拉取请求具有当前状态的所有详细信息,以及如果您想了解更多信息的解决方案。
HTTP客户端“hasHeaders”声明
MattKingshott贡献了一个 hasHeaders() HTTP客户端方法,该方法使您可以使用一些语法糖来检查多个标头的现有(和值):
$headers = [ 'X-Test-Header' => 'foo', 'X-Test-ArrayHeader' => ['bar', 'baz'], ]; Http::withHeaders($headers); //... Http::assertSent(function ($request) use ($headers) { return $request->hasHeaders($headers); });
发行说明
您可以在下面查看新功能和更新的完整列表,以及GitHub上7.6.0和7.7.0之间的区别。最新的v7更新日志中提供了Laravel7.x的完整发行说明:
v7.7.0
添加
添加了对Http客户端获取请求的ArrayAccess支持(#32401)
新增 (#32407)Illuminate\Http\Client\Factory::assertSentCount()
新增 (#32411)Illuminate\Database\Schema\Blueprint::rawIndex()
在口才生成器中将getGrammar添加到passthru(#32412)
--relative 向storage:link 命令添加了 选项 (#32457,24b705e)
column 为外部约束添加了动态 键(#32449)
添加了对可变参数构造函数参数的容器支持(#32454,1dd6db3)
新增 (#32462)Illuminate\Http\Client\Request::hasHeaders()
固定的
固定 于具有主键的型号(#32421)MorphPivot::delete()
在容器调用方法(#32439,44c2a8d)上缺少必需参数时引发异常
修复了HttpClient多部分请求(#32428,1f163d4)
固定的 (#32447)Illuminate\Support\Stringable::isEmpty()
固定 whereNull/whereNotNull 适用于MySQL中的json(#32417,d3bb329)
固定 为可调用(#32471)Collection::orderBy()
已变更
在内部 重复使用 (#32416)Router::newRoute()CompiledRouteCollection
制作 Illuminate\Queue\InteractsWithQueue.php::$job公共(2e272ee)
计划运行执行期间引发的捕获和报告异常(#32461)