2020/03/03 に Laravel7 がリリースされたので、ちょっとだけ見てみました。
(2020/3/19 現在、バージョンは 7.1.3)
https://laravel.com/docs/7.x/upgrade
use Throwable;
public function report(Throwable $exception);
public function render($request, Throwable $exception);
composer.json に必要なライブラリのバージョンを書き換えます。
"require": {
"php": "^7.2.5",
"fideloper/proxy": "^4.2",
"fruitcake/laravel-cors": "^1.0",
"guzzlehttp/guzzle": "^6.3",
"laravel/framework": "^7.3",
"laravel/tinker": "^2.0"
},
"require-dev": {
"facade/ignition": "^2.0",
"fzaninotto/faker": "^1.9.1",
"laravel/ui": "^2.0",
"mockery/mockery": "^1.3.1",
"nunomaduro/collision": "^4.1",
"phpunit/phpunit": "^8.5"
},
$ composer update
「Authentication Scaffolding」が変更となったようです。
DB と Eloquent のフォーマットがことなると、Exception になるのでこれが改修されたか?検証が必要
$ composer require fruitcake/laravel-cors
「CastsAttributes」を implements することで、カスタムでキャストすることができます。
カスタムクラスに、get、set メソッドを追加し、Eloquent モデルに $casts を設定することで、自動的にキャストされるようです。
下記の例は、json_decode()、json_encode() を利用して JSON型のキャストを行なっています。
namespace App\Casts;
use Illuminate\Contracts\Database\Eloquent\CastsAttributes;
class Json implements CastsAttributes
{
public function get($model, $key, $value, $attributes)
{
return json_decode($value, true);
}
public function set($model, $key, $value, $attributes)
{
return json_encode($value);
}
}
namespace App;
use App\Casts\Json;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
protected $casts = [
'options' => Json::class,
];
}
Viewコンポーネントクラスにプロパティやメソッドを設定することで、Blade の記述をシンプルにできます。
下記の例は、Alert コンポーネントクラスを作成し「alert.blade.php」に対して、class を動的に設定します。
namespace App\View\Components;
use Illuminate\View\Component;
class Alert extends Component
{
public $type;
public function __construct($type)
{
$this->type = $type;
}
public function classForType()
{
return $this->type == 'danger' ? 'alert-danger' : 'alert-warning';
}
public function render()
{
return view('components.alert');
}
}
実際に、認証処理を実装していきます。
※Laravel7 の認証ページ
https://readouble.com/laravel/7.x/ja/authentication.html
$ composer create-project laravel/laravel laravel-auth --prefer-dist
$ chmod -R 777 storage
$ chmod -R bootstrap/cache
$ php artisan --version
Laravel Framework 7.1.3
この時点で、 config/auth.php などが作成されています。
namespace App;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
class User extends Authenticatable
{
use Notifiable;
protected $fillable = [
'name', 'email', 'password',
];
protected $hidden = [
'password', 'remember_token',
];
protected $casts = [
'email_verified_at' => 'datetime',
];
}
最近のバージョンアップが早く、仕様も日々変わりつつあるのでチェックが必要ですね。