Laravel 團隊昨天發布了 v7.7.0,其中包含容器支持的建構式支持可變引數,一些新的 HTTP 客戶端功能,Blueprint 新增 rawIndex() 方法以及 7.x 分支中的所有最新功能,修復和更改 :
HTTP 客戶端 GET 請求 支持陣列
Daniel Mason 貢獻了 HTTP 客戶端支持陣列的功能:
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 斷言
Christoph Rumpel 為 HTTP 客戶端新增了 assertSentCount 斷言,這對斷言發送的預期請求值很有用:
$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” 方法可以使用運算式創建索引
Jonathan Reinink 貢獻了 rawIndex 方法, 允許我們使用自定義 SQL 運算式創建索引:
// Before
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")))');
// After
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');
});
容器建構式支持可變引數
Beau Simensen 為容器新增了可變引數功能,下面是個簡單的使用案例:
// Before
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),
]
);
});
// After
app()->singleton(Logger::class, MyLogger::class);
app()
->when(Firewall::class)
->needs(Filter::class)
->give([
NullFilter::class,
ProfanityFilter::class,
TooLongFilter::class,
]);
就像 pull request 中的描述一樣, 您也可以將閉包傳遞給 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),
];
});
pull request 包含所有詳細資訊,和其他可以解決的問題,
HTTP 客戶端新增 “hasHeaders” 斷言
Matt Kingshott 為 HTTP 客戶端 新增了 hasHeaders() 方法,該方法可以讓您使用一些語法糖檢查存在的請求頭或值:
$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 changelog 看到:
v7.7.0
新增
- HTTP 客戶端 GET 請求支持陣列 (#32401)
- 新增
Illuminate\Http\Client\Factory::assertSentCount()(#32407) - 新增
Illuminate\Database\Schema\Blueprint::rawIndex()(#32411) - Eloquent builder 新增 getGrammar 到 passthru 中 (#32412)
storage:link命令新增--relative引數 (#32457, 24b705e)- 外鍵約束新增動態
columnkey (#32449) - 容器新增可變引數支持 (#32454, 1dd6db3)
- 新增
Illuminate\Http\Client\Request::hasHeaders()(#32462)
修復
- 修復帶有主鍵模型的
MorphPivot::delete()功能 BUG (#32421) - 容器呼叫缺少必要引數會拋出例外 (#32439, 44c2a8d)
- 修復 HTTP 客戶端 multipart 請求 (#32428, 1f163d4)
- 修復
Illuminate\Support\Stringable::isEmpty()(#32447) - 修復
whereNull/whereNotNull支持 MySQL 的 json 欄位 (#32417, d3bb329) - 修復
Collection::orderBy()使用回呼 (#32471)
更改
CompiledRouteCollection重新啟用Router::newRoute()(#32416)- 更高
Illuminate\Queue\InteractsWithQueue.php::$job為 public (2e272ee) - 計劃任務運行期間捕獲并報告例外 (#32461)
原文地址:https://laravel-news.com/laravel-7-7-rel...
譯文地址:https://learnku.com/laravel/t/43581
更多學習內容請訪問:
騰訊T3-T4標準精品PHP架構師教程目錄大全,只要你看完保證薪資上升一個臺階(持續更新)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/51266.html
標籤:PHP
上一篇:PHP 常用特殊字符的各種表示
