
[Laravel] 5.8.11がリリースされました
laravel/frameworkのバージョン5.8.11がリリースされました。追加された機能について確認します。
lluminate\Support\Facades\DateクラスからMacroableなメソッドを直接実行可能になりました (#28129)
Macroableの機能を利用した関数を、staticな関数のように実行することができるようになりました。
Date::macro('returnNonDate', function () {
return 'string';
});
$this->assertSame('string', Date::returnNonDate());
Filesystemsクラスでローカルのディスクを利用する場合にファイルロックの利用をカスタマイズできるようになりました (#28124)
以下のようにconfig/filesystems.phpでlockパラメーターを指定することでカスタマイズ可能です。
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
'lock' => 0,
],
Filesystemsについてさらに詳しく知りたい場合はこちらを確認してください。
Illuminate\Console\Scheduling\Eventがコマンドの終了コードを保存するようになりました (#28140)
この機能の追加により、スケジューリングに指定したコマンドのテストが可能になりました。
LaravelでのスケジューリングにはApp\ConsoleKernelクラスのschedule()メソッドで行うことが推奨されています。
このメソッド内で$schedule->command()等を用いてコマンドを実行する場合には、内部的にはIlluminate\Console\Scheduling\Eventとして処理されています。
Illuminate\Console\Scheduling\EventにはMacroableトレイトが利用可能なので、Macroableを利用した独自のメソッドの追加などによりコマンド実行時の終了コードを確認できます。
詳しい変更については以下を確認してください。
Release v5.8.11 · laravel/framework · GitHub

[Laravel] 5.8.10がリリースされました
laravel/frameworkのバージョン5.8.10がリリースされました。追加された機能について確認します。
モデルイベントにreplicatingが追加されました (#28077)
$model->replicate()メソッド実行時にイベントが発火されます。
既存のイベントと同じように、boot()メソッドやObserverでの指定が可能です。
NotificationFakeクラスでMacroableが利用可能になりました (#28091)
詳しい変更については以下を確認してください。
Release v5.8.10 · laravel/framework · GitHub

[Laravel] 5.8.9がリリースされました
laravel/frameworkのバージョン5.8.9がリリースされました。追加された機能について確認します。
リスナーイベントの自動検出機能が追加されました (#28064, #28085)
イベントとリスナーの紐付けを行うにはサービプロバイダー内で明示的に定義する必要がありましたが、これを自動検出可能になりました。
自動検出を利用するにはshouldDiscoverEvents()メソッドがtrueを返す必要があります。(デフォルトはfalseです)
app/Providers/EventServiceProvider.php:
/**
* Determine if events and listeners should be automatically discovered.
*
* @return bool
*/
public function shouldDiscoverEvents()
{
return true;
}
自動検出機能を利用する場合には、フレームワークはapp/Listeners内のクラスをスキャンし、対応するイベントのpublicなhandle()メソッドおよびhandleから始まるメソッドを検出します。
その後、これらのパラメータとメソッドを調べてリスナーがどのイベントを処理しているのかを判断することで、EventServiceProviderで現在構成されている手動で構築された配列と基本的に同じイベント/リスナーの配列を構築します。
最後に、明示的に定義されたイベントを検出されたイベントの上にマージし、すべてをDispatcherに登録します。
自動検出が有効になっている場合、検出されたイベントは2つの方法でロードされます。
1. event:cacheコマンドによって生成されたキャッシュファイルからの読み込み
フレームワークがイベントキャッシュファイルを見つけると、イベント/リスナーの設定はそのファイルからロードされます。
EventServiceProviderで明示的に定義されたイベント/リスナーも登録されます。
2. 実行時に毎回自動検出を実行する
イベントキャッシュファイルが見つからない場合は、リクエスト中にイベント/リスナーがその場で検出されます。
余計な処理が増えるため、これはプロダクションにはお勧めできません。
Automatic Event / Listener Discovery - The Laravel Blog
また、自動検出機能の恩恵による登録されたイベント/リスナーの一覧を表示するevent:listコマンドも追加されました。
詳しい変更については以下を確認してください。
Release v5.8.9 · laravel/framework · GitHub

[Laravel] 5.8.8がリリースされました
laravel/frameworkのバージョン5.8.8がリリースされました。追加された機能について確認します。
Illuminate\Database\Query\BuilderクラスにforPageBeforeId()メソッドが追加されました (#28011)
指定したレコードより前に作成されたレコードを取得できます。
// 指定したid以前の10件を取得
$beforePages = Model::forPageBeforeId(10, $focus->id);
// 指定した日付以前の20件を取得
$beforePages = Model::forPageBeforeId(20, $focus->created_at, 'created_at');
また、以前からBuilderクラスにはforPageAfterId()メソッドが存在しており、特定のレコードに対する前後のレコードの取得も可能です。
$posts = new Collection;
$posts = $posts->concat(ChatPost::forPageBeforeId(15, $focused->id)->get()->reverse());
$posts = $posts->push($focused);
$posts = $posts->concat(ChatPost::forPageAfterId(15, $focused->id)->get());
// -> ChatPost 202
// -> ChatPost 203
// -> ChatPost 204
// => ChatPost 205 < focused post
// -> ChatPost 206
// -> ChatPost 207
// -> ChatPost 208
詳しい変更については以下を確認してください。
Release v5.8.8 · laravel/framework · GitHub

[Laravel] 5.8.5がリリースされました
laravel/frameworkのバージョン5.8.5がリリースされました。追加された機能について確認します。
※ このリリースにはUnique Ruleに関するインジェクション対策が含まれています。
Unique Rule SQL Injection Warning - The Laravel Blog
DatabaseManageクラスにsetReconnector()メソッドが追加されました (#27845)
任意のタイミングでデータベースコネクションの再接続が可能になりました。
Gateクラスにnone()メソッドが追加されました (#27859)
指定した認可処理のいずれにも許可が無いことを確認できるようになりました。
Illuminate\Auth\Access\Gate:
/**
* Determine if any one of the given abilities should be denied for the current user.
*
* @param iterable|string $abilities
* @param array|mixed $arguments
* @return bool
*/
public function none($abilities, $arguments = [])
{
return ! $this->any($abilities, $arguments);
}
OtherDeviceLogoutイベントが追加されました (#27865, 5e87f2d)
ユーザーがパスワードを変更した際に発火されるイベントが追加されました。
尚、Laravel上でユーザーのパスワード変更時に他のデバイスからログアウトさせるためには、app/Http/Kernel.phpで\Illuminate\Session\Middleware\AuthenticateSessionクラスを有効にする必要があります。
bladeエンジンでループ処理を行う際に取得可能な値にevenとoddが追加されました (#27883)
詳しい変更については以下を確認してください。
Release v5.8.5 · laravel/framework · GitHub

[Laravel] 5.8.4がリリースされました
laravel/frameworkのバージョン5.8.4がリリースされました。追加された機能について確認します。
Collectionクラスにjon()メソッドが追加されました (#27723)
implode()メソッドと似ていますが、Collectionの値を文字列で連結する場合に最後の項目にのみ指定の語句を追加することができます。
$this->assertEquals('a, b, c', (new Collection(['a', 'b', 'c']))->join(', '));
$this->assertEquals('a, b and c', (new Collection(['a', 'b', 'c']))->join(', ', ' and '));
$this->assertEquals('a and b', (new Collection(['a', 'b']))->join(', ', ' and '));
$this->assertEquals('a', (new Collection(['a']))->join(', ', ' and '));
$this->assertEquals('', (new Collection([]))->join(', ', ' and '));
Illuminate\Foundation\Http\KernelクラスにgetRouteMiddleware()メソッドが追加されました (#27852)
ルートミドルウェアに登録されたミドルウェアを取得可能になりました。
これにより特定のミドルウェアが登録されていることのテストが可能になりました。
/** @test */
public function it_registers_a_custom_route_middleware()
{
$middlewares = resolve(\App\Http\Kernel::class)->getRouteMiddleware();
$this->assertArrayHasKey('custom', $middlewares);
$this->assertEquals(\App\Http\Middleware\Custom::class, $middlewares['custom']);
}
Strクラスにデンマーク言語特有の処理が追加されました (#27857)
詳しい変更については以下を確認してください。
Release v5.8.4 · laravel/framework · GitHub

[Laravel] 5.8.3がリリースされました
laravel/frameworkのバージョン5.8.3がリリースされました。追加された機能について確認します。
CollectionクラスにcountBy()メソッドが追加されました
Collection内の配列を値毎にカウントできるようになりました。
collect([ 1, 2, 2, 2, 3 ])->countBy(); // == collect([ 1 => 1, 2 => 3, 3 => 1 ])
また、コールバックに関数を指定することでカウント方法をカスタマイズできます。
collect([ '[email protected]', '[email protected]', '[email protected]' ])
->countBy(function ($email) {
return substr(strrchr($email, "@"), 1);
}); // == collect([ 'gmail.com' => 2, 'yahoo.fr' => 1 ])
EloquentUserProviderクラスにnewModelQuery()メソッドが追加されました
ユーザーの認証時に仕様するEloquentUserProviderですが、アプリケーション独自の認証方法を実装する際には各インターフェイスの実装が必要でした。
EloquentUserProvider継承したクラスでnewModelQuery()メソッドをカスタマイズすることで拡張が容易になります。
adminロールが指定されたユーザーの認証を利用する例:
<?php
namespace App\Extensions;
use Illuminate\Auth\EloquentUserProvider;
class MyEloquentAdminProvider extends EloquentUserProvider
{
protected function modelQuery($model = null)
{
return parent::newModelQuery($model)->where('role', 'admin');
}
}
StartSessionクラスにsaveSession()メソッドが追加されました
ミドルウェア内でSession情報を扱う場合にhandle()メソッドをオーバーライドすることなく、Session情報のみを扱う用途で使用します。
/**
* Save the session data to storage.
*
* @param \Illuminate\Http\Request $request
* @return void
*/
protected function saveSession($request)
{
if ($request->route()->named('statamic.cp.session.timeout')) {
return;
}
session()->put('last_activity', now()->timestamp);
parent::saveSession($request);
}
ModelクラスのbelongsToMany()メソッドの2つ目の引数にModel/Pivotクラスを渡せるようになりました
belongsToManyを利用する場合は関連テーブル名をハードコーディングし、using()メソッドを使って中間テーブルを指定する必要がありました。
Model::getTable()を使い動的に取得する方法もありましたが、Pivotモデルを直接渡すことでシンプルに記述できるようになりました。
return $this->belongsToMany(Profile::class, CustomerProfile::class);
詳しい変更については以下を確認してください。
Release v5.8.3 · laravel/framework · GitHub

[Laravel Nova] v2.0.0がリリースされました
リリース内容としてはLaravelv5.8への対応ですが、先日にもNovaのv1.3.2のリリースもあり、コミュニティでは多くのユーザーを獲得しているようです。
v2.0.0までのリリース履歴
Novaのv1.0がリリースされたのが2018年08月ですが、頻繁にバージョンアップのリリースが行われています。
v2.0.0 Released February 26, 2019
v1.3.2 Released February 11, 2019
v1.3.1 Released January 21, 2019
v1.3.0 Released January 7, 2019
v1.2.1 Released December 12, 2018
v1.2.0 Released November 28, 2018
v1.1.9 Released November 27, 2018
v1.1.8 Released November 21, 2018
v1.1.7 Released October 25, 2018
v1.1.6 Released October 24, 20186
v1.1.5 Released October 23, 2018
v1.1.4 Released October 1, 2018
v1.1.3 Released September 21, 2018
v1.1.2 Released September 21, 2018
v1.1.1 Released September 20, 2018
v1.1.0 Released September 20, 2018
v1.0.19 Released September 19, 2018
v1.0.18 Released September 19, 2018
v1.0.17 Released September 18, 2018
v1.0.16 Released September 12, 2018
v1.0.15 Released September 11, 2018
v1.0.14 Released September 9, 2018
v1.0.13 Released September 7, 2018
v1.0.12 Released September 4, 2018
v1.0.11 Released September 4, 2018
v1.0.10 Released September 4, 2018
v1.0.9 Released September 4, 2018
v1.0.8 Released August 29, 2018
v1.0.7 Released August 28, 2018
v1.0.6 Released August 24, 2018
v1.0.5 Released August 23, 2018
v1.0.4 Released August 23, 2018
v1.0.3 Released August 22, 2018
v1.0.2 Released August 22, 2018
v1.0.1 Released August 22, 2018
v1.0.0 Released August 22, 2018
Novaを使ったアプリケーション
特に日本では利用者が少ないイメージです。
私は1つのプロジェクトをLaravel Novaへの移行が完了し、操作性や開発速度の速さを体感しています。
デフォルトでAlgoliaの検索エンジンの利用も実装されており、必要な情報へどこからでもアクセスできます。
Laravelを使ってアプリケーションを作成する場合に、サーバーサイドだけでなく、フロント部分にもフォーカスしたい場合には特におすすめします。
また、ダウンロードしたNovaのソースコードはLaravel + Vue.jsを利用したアプリケーションのデファクトスタンダードと言ってもよいでしょう。とても参考になり、これだけでも価値があると思えます。
今後はコミュニティを広げる為にも、Laravel Novaの使用感等をレポートしていく予定です。

[Laravel] 5.8がリリースされました
laravel/frameworkのバージョン5.8がリリースされました。追加された機能について確認します。
Release
EloquentクラスにHasOneThrough()メソッドが追加されました
関連するリレーションを経由したリレーションを操作できます。
たとえば、SupplierモデルにAccountモデルが1つあり、AccountモデルにAccountHistoryモデルが1つあるとします。
Accountモデルを通じてSupplierのAccountHistoryを1件するには、hasOneThroughリレーションを使用します。
Schema:
// suppliers table
Schema::create('suppliers', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->timestamps();
});
// accounts table
Schema::create('accounts', function (Blueprint $table) {
$table->bigIncrements('id');
$table->bigInteger('supplier_id');
$table->string('email');
$table->timestamps();
});
// account_histories table
Schema::create('account_histories', function (Blueprint $table) {
$table->bigIncrements('id');
$table->bigInteger('account_id');
$table->string('sentence');
$table->timestamps();
});
hasOneThrough Model:
// App\Supplier class
/**
* Get the account history for the supplier.
*/
public function accountHistory()
{
return $this->hasOneThrough(AccountHistory::class, Account::class);
}
$supplier->accountHistory;
Result:
{
"id": 1,
"account_id": 1,
"content": "Officia quas velit minus explicabo quibusdam a.",
"created_at": "2019-02-27 01:52:21",
"updated_at": "2019-02-27 01:52:21",
"laravel_through_key": 1
}
// select * from `suppliers` where `suppliers`.`id` = 1 limit 1
// select `account_histories`.*, `accounts`.`supplier_id` as `laravel_through_key` from `account_histories` inner join `accounts` on `accounts`.`id` = `account_histories`.`account_id` where `accounts`.`supplier_id` = 1 limit 1
また、Supplierの全てのAccountHistoryを取得する場合にはhasManyThrough()リレーションを使用します。
hasManyThrough Model:
// App\Supplier class
/**
* Get the account histories for the supplier.
*/
public function accountHistories()
{
return $this->hasManyThrough(AccountHistory::class, Account::class);
}
$supplier->accountHistories;
Result:
[
{
"id": 1,
"account_id": 1,
"content": "Officia quas velit minus explicabo quibusdam a.",
"created_at": "2019-02-27 01:52:21",
"updated_at": "2019-02-27 01:52:21",
"laravel_through_key": 1
},
{
"id": 2,
"account_id": 2,
"content": "Qui ut optio est voluptatem dolores voluptatem tempore.",
"created_at": "2019-02-27 01:52:21",
"updated_at": "2019-02-27 01:52:21",
"laravel_through_key": 1
},
...
{
"id": 201,
"account_id": 1,
"content": "Qui odio excepturi magni est quisquam.",
"created_at": "2019-02-27 01:52:22",
"updated_at": "2019-02-27 01:52:22",
"laravel_through_key": 1
},
{
"id": 202,
"account_id": 2,
"content": "Sed nesciunt architecto est voluptas officiis esse voluptatem.",
"created_at": "2019-02-27 01:52:22",
"updated_at": "2019-02-27 01:52:22",
"laravel_through_key": 1
}
]
// select * from `suppliers` where `suppliers`.`id` = 1 limit 1
// select `account_histories`.*, `accounts`.`supplier_id` as `laravel_through_key` from `account_histories` inner join `accounts` on `accounts`.`id` = `account_histories`.`account_id` where `accounts`.`supplier_id` = 1
モデルのPolicyが自動検出されるようになりました
v5.7までのPolicyの利用にはAuthServiceProviderへの手動登録が必要でしたが、v5.8からは自動で登録されるようになります。
自動登録を行うには、クラス名をモデル名 + Policyとし、app/policiesディレクトリへ配置するという命名規則に従う必要があります。
また、独自の命名規則を使用する場合にはGateクラスのguessPolicyNameUsing()メソッドを利用して拡張することができます。
// app/Providers/AuthServiceProvider.php
public function boot()
{
$this->registerPolicies();
Gate::guessPolicyNameUsing(function ($modelClass) {
$policyClass = class_basename($modelClass) . 'Authorizer';
return "App\\Policies\\{$name}";
});
}
Cacheの仕様がPSR-16に準拠されました
以下のキャッシュメソッドに渡していた整数の引数の値が分数から秒数へ変更されました。
put
putMany
add
remember
setDefaultCacheTime
引数としてDateTimeクラス(Carbonクラス等の拡張クラス含む)を渡している場合には変更はありません。
// Laravel 5.7 - Store item for 30 minutes...
Cache::put('foo', 'bar', 30);
// Laravel 5.8 - Store item for 30 seconds...
Cache::put('foo', 'bar', 30);
// Laravel 5.7 / 5.8 - Store item for 30 seconds...
Cache::put('foo', 'bar', now()->addSeconds(30));
Broadcastに複数の認証が指定可能になりました
以前のリリースでは、BroadcastChannelはアプリケーションのデフォルト認証を介してユーザを認証していました。
Laravel 5.8以降では、通知要求を認証するための複数の認証を割り当てることができます。
Broadcast::channel('channel', function() {
// ...
}, ['guards' => ['web', 'admin']])
API Tokenの認証にSHA256ハッシュのサポートが追加されました
プレーンテキストTokenを格納するよりもセキュリティが向上します。
利用するにはconfig/auth.phpでhashの利用を許可します。
'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' => true,
],
また、API Tokenの作成はユーザー登録時には行わず、アプリケーション内に独自のAPIトークン管理ページを実装する必要があります。
このページでは、ユーザーが自分のAPI Tokenを初期化して更新できるようにする必要があります。
ユーザーのTokenの初期化または更新が必要な場合は、Tokenのハッシュコピーをデータベースに格納し、Tokenのプレーンテキストコピーを一度表示するためにクライアントに返す必要があります。
<?php
namespace App\Http\Controllers;
use Illuminate\Support\Str;
use Illuminate\Http\Request;
class ApiTokenController extends Controller
{
/**
* Update the authenticated user's API token.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function update(Request $request)
{
$token = Str::random(60);
$request->user()->forceFill([
'api_token' => hash('sha256', $token),
])->save();
return ['token' => $token];
}
}
メールアドレスに対するバリデーションが改善されました
Scheduleを実行するタイムゾーンの指定が可能になりました
timezone()メソッドを使ってスケジュールされたタスクのタイムゾーンを指定できます。
$schedule->command('inspire')
->hourly()
->timezone('America/Chicago');
また、すべてのスケジュールされたタスクに対して同じタイムゾーンを指定する場合には、\App\Console\KernelクラスのscheduleTimezone()メソッドを利用して一律に設定が可能です。
/**
* Get the timezone that should be used by default for scheduled events.
*
* @return \DateTimeZone|string|null
*/
protected function scheduleTimezone()
{
return 'America/Chicago';
}
Pivotモデルの更新時にEloquentモデルイベントが発行されうようになりました
Artisanクラスのcall()メソッドの引数問題が改善されました
Laravelの以前のリリースでは、コマンドのオプションはメソッドの2番目の引数として配列を介して渡されていました。
use Illuminate\Support\Facades\Artisan;
Artisan::call('migrate:install', ['database' => 'foo']);
しかし、Laravel 5.8では、オプションを含むコマンド全体をメソッドの最初の文字列引数として渡すことができます。
Artisan::call('migrate:install --database=foo');
テスト時のMock、Spyに関するヘルパーメソッドが追加されました
モックオブジェクトをより便利にするために、新しいモックメソッドとスパイメソッドが基本のLaravelテストケースクラスに追加されました。
これらのメソッドは、モッククラスを自動的にコンテナにバインドします。
// Laravel 5.7
$this->instance(Service::class, Mockery::mock(Service::class, function ($mock) {
$mock->shouldReceive('process')->once();
}));
// Laravel 5.8
$this->mock(Service::class, function ($mock) {
$mock->shouldReceive('process')->once();
});
Resourcesクラスを利用してDatabaseCollectionのレスポンスを行う際にkeyをカスタマイズできるようになりました
コレクションのキーを保存するかどうかを示すpreserveKeysプロパティをリソースクラスに追加できるようになりました。
デフォルトでは、そして以前のLaravelリリースとの一貫性を保つために、キーはデフォルトでリセットされます。
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class User extends JsonResource
{
/**
* Indicates if the resource's collection keys should be preserved.
*
* @var bool
*/
public $preserveKeys = true;
}
preserveKeysプロパティが未設定の場合には、コレクションキーは保持されます。
use App\User;
use App\Http\Resources\User as UserResource;
Route::get('/user', function () {
return UserResource::collection(User::all()->keyBy->id);
});
EloquentモデルのorWhere()メソッドがHigherOrderに対応しました
Laravelの以前のリリースでは、論理和演算子を介して複数のEloquentモデルスコープを組み合わせるには、Closureコールバックを使用する必要がありました。
// scopePopular and scopeActive methods defined on the User model...
$users = App\User::popular()->orWhere(function (Builder $query) {
$query->active();
})->get();
Laravel 5.8では、クロージャを使用せずにこれらのスコープをスムーズに連鎖させることができるHigherOrderなorWhereメソッドが導入されました。
$users = App\User::popular()->orWhere->active()->get();
Artisan Serveコマンドでのビルドインサーバーを複数起動可能になりました
Laravelの以前のリリースでは、Artisanのserveコマンドはポート8000でビルドインサーバーを提供していました。
別のアプリケーションでserveコマンドを実行した場合には、既にポートがlistenされているため、コマンドはエラーを投げていました。
Laravel 5.8以降、serveはポート8009までの使用可能なポートをスキャンするようになりました。これにより、一度に複数のアプリケーションに対応できます。
Bladeファイルへの追跡が可能になりました
Bladeテンプレートをコンパイルするとき、Laravelはコンパイル済みファイルの先頭に元のBladeテンプレートへのパスを含むコメントを追加するようになりました。
Cache、SessionのドライバにDynamoDBが利用可能になりました
DynamoDBをドライバとして利用する場合にはconfig/cache.phpを設定します。
'dynamodb' => [
'driver' => 'dynamodb',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_REGION', 'us-east-1'),
'table' => env('DYNAMODB_CACHE_TABLE', 'cache'),
],
Carbon 2.0がサポートされました
Pheanstalk 4.0がサポートされました
Upgrade
MySQLでJson型のカラムの結果を受け取る場合に引用符が付与されなくなりました
MySQLとMariaDBを使用している場合、クエリービルダーは引用符で囲まれていないJSON値を返すようになりました。
この動作は、サポートされている他のデータベースと一貫性があります。
その結果、 ->>`演算子はサポートされなくなり、必要なくなりました。
$value = DB::table('users')->value('options->language');
dump($value);
// Laravel 5.7...
'"en"'
// Laravel 5.8...
'en'
Illuminate/Events/Dispatcherクラスのfire()メソッドが削除されました
代わりにdispatch()メソッドを使用してください。
SoftDeleteを利用したモデルのdeleted_atカラムがキャストされるようになりました
EloquentモデルがSoftDeletesトレイトを使用するとき、deleted_atプロパティは自動的にCarbonインスタンスにキャストされます。
この動作を無効にするには、そのプロパティのカスタムアクセサを作成するか、手動でcasts属性に追加します。
protected $casts = ['deleted_at' => 'string'];
MarkDownメールのファイルディレクトリが変更されました
/resources/views/vendor/mail/markdownへ変更されました。
以前にvendor:publishを実行してファイルをコピーしている場合には手動で変更する必要があります。
str_*およびarray_*に関するヘルパーが非推奨になりました
これらのヘルパーは削除される予定なので、代わりにIlluminate\Support\ArrおよびIlluminate\Support\Strクラスを使用してください。
ヘルパーが必要な場合は、laravel/helpersパッケージを追加でインストールしてください。
NexmoおよびSlack への通知クラスが外部パッケージへと変更されました
アプリケーションでこれらのチャンネルを使用するには、以下のパッケージが必要です。
composer require laravel/nexmo-notification-channel
composer require laravel/slack-notification-channel
詳しい変更については以下を確認してください。
Release Notes - Laravel - The PHP Framework For Web Artisans

[Laravel] 5.7.26がリリースされました
laravel/frameworkのバージョン5.7.26がリリースされました。追加された機能について確認します。
PipelineクラスにthenReturn()メソッドが追加されました
Pipelineで処理するオブジェクトに対して、チェインメソッドで続けて処理が記述できるようになりました。
// \Illuminate\Pipeline\Pipeline
/**
* Run the pipeline and return the result.
*
* @return mixed
*/
public function thenReturn()
{
return $this->then(function ($passable) {
return $passable;
});
}
---
$users = app(Pipeline::class)
->send(User::query())
->through($pipes)
->thenReturn()
->whereConfirmedEmail()
->whereAccountActive()
->get();
TaggedCacheクラスにgetTags()メソッドが追加されました
現在キャッシュされているタグの状態(\Illuminate\Cache\TagSet)を取得できます。
ResponseTraitクラスにgetCallback()メソッドが追加されました
JSONPレスポンスを作成する場合にwithCallback()メソッドで指定するコールバックの内容を取得できます。
// \Illuminate\Http\ResponseTrait
/**
* Get the callback of the response.
*
* @return string|null
*/
public function getCallback()
{
return $this->callback ?? null;
}
laravel/frameworkパッケージのコンポーネント毎にライセンスが追加されました
ModelクラスにwithoutEvents()メソッドが追加されました
以前までのEloquentモデル内で発火される各イベントを無効化するには、処理を行う前後でEventDispatcherの無効・有効を切り替えたり、Event::fake()を使って個別に指定する必要がありましたが、モデル内のイベントの切り替えが容易になりました。
Before:
$dispatcher = User::getEventDispatcher();
User::unsetEventDispatcher();
$user = factory(User::class)->create();
User::setEventDispatcher($dispatcher);
$user->doSomethingWhereEventsShouldFire();
After:
$user = User::withoutEvents(function () {
return factory(User::class)->create();
});
$user->doSomethingWhereEventsShouldFire();
詳しい変更については以下を確認してください。
Release v5.7.26 · laravel/framework · GitHub