ポータルサイトブログLaravel8がリリース

 



2020/9/11

Laravelのバージョン8がリリースされました。
https://laravel.com/docs/8.x
主要な変更点をご紹介します。

PHP7.3以上必須

Laravel7まではPHP7.2.5以上が必須でしたが、8からはPHP7.3以上が必須になります。

近々PHP8がリリースされますので、はやめに対応した方が良いでしょう。

主要なレンタルサーバーはPHP7.4以上対応になっているように思いますが、サーバー設定でバージョンアップする必要があるか、確認が必要です。

ディレクトリパスが変更

Modelのデフォルトパスが、これまで app ディレクトリ直下でしたが、8からは app/Models がデフォルトになります。

また、シーディングファイルのディレクトリ名も、これまで database/seeds だったものが database/seeders に変更になります。

これに加え、上記 database/seedersdatabase/factories ディレクトリ内のファイルはこれまで直インクルードで autoload されていましたが、PSR-4 方式での autoload に変更になります。

よって、 composer.json を以下のように変更する必要があります。

...
    "autoload": {
        "psr-4": {
            "App\\": "app/"
        },
        "classmap": [
            "database/seeds",
            "database/factories"
        ]
    },
...

↓以下のように変更

...
    "autoload": {
        "psr-4": {
            "App\\": "app/",
            "Database\\Factories\\": "database/factories/",
            "Database\\Seeders\\": "database/seeders/"
        }
    },
...

factoryがクラスベースに変更

テストなどで使う factory ですが、これまでは以下のように factory 関数による使い方でした。

<?php
$users = factory(App\User::class, 3)->make();

これが、Modelへのトレイト組み込みによるクラスベースへと変更になりました。
まず Modelに HasFactory トレイトを組み込みます。

<?php
namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    use HasFactory;
}

使い方としては以下のように、クラスからの呼び出しになります。

<?php
$users = App\Models\User::factory()->count(3)->make();

動的コンポーネント

便利なコンポーネント機能ですが、8からは <x-dynamic-component/> というタグを使うことによって動的な名前で読み込むことができるようになりました。

<x-dynamic-component :component="$componentName" class="mt-4" />

以上、主なポイントのみ紹介しましたが、アップグレードをお考えの場合は公式のアップグレードガイドを参照してください。(7から8へのアップグレードが対象)

https://laravel.com/docs/8.x/upgrade

特に「High Impact Changes」の部分は必ず確認しましょう。