ポータルサイトブログLaravel8がリリース
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/seeders
と database/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」の部分は必ず確認しましょう。