Laravel 5.1がリリースされたので、変わった所等をざっと見ました。
まだまだ追いきれてない箇所もあるので、あとで追加するかもしれないです。
基本的な仕様
- PHP5.5.9以上が必須に
- 暗号化にopensslが使われるように
- PSR-2に完全準拠
- Long Term Support(3年間の長期サポート)
すでに、Laracastsに動画が上がってました。見ると良いと思います。
What’s New in Laravel 5.1
追加・変更部分(追えた部分のみ)
-
app/Commands
が無くなり、app/Jobs
に変更。 -
app/Handlers
が無くなり、app/Listeners
に変更。 -
::class
構文を使うようになった。完全修飾名を文字で返す際には使われるように。 - filesystemの標準サポートに
ftp
が追加 - Bloadcasting Eventが追加(Illuminate\Broadcasting)
-
make:seeder
が追加され、seederをコマンドで作成出来るように。 -
make:model
がデフォルトでマイグレーションファイルを作らないようになった。利用するには`--migration
を付ける。 - Laravel Elixirの変換に
babel
メソッドが追加
またこのバージョンでは、Laravelのサンプルファイルや不要ライブラリがほぼ全て削除されました。(WelcomeControllerとかbootstrapとか)
良い部分
初の長期サポートバージョン
Laravel5.1はLaravelがローンチされて以来初のLong Term Supportとなってます。(バグ対応が2年、セキュリティ対応が3年)
今までLaravelはどんどん仕様が変わっていき、追うのが大変でしたがやっと楽になるみたいです。
今後は、2年ごとにLTSリリースを予定しているようで、今度のLTSは2017年を予定しているようです。
ドキュメントの拡張
Laravelのドキュメントは以前から情報が少ないと言われてましたが、今回のバージョンからドキュメントの量が非常に増えてます。
一例として、Collectionsのページをリンクで貼っておきます。
また、検索もサジェストしてくれるようになってます。
暗号化の方式がopensslに
以前までLaravelは暗号化にmcrypt拡張を利用してきましたが、opensslでの暗号化に変わりました。
一応Mcryptでの暗号化も出来るようですが、いずれ削除されるでしょう。
framework/Encrypter.php at 5.1 laravel/framework
framework/McryptEncrypter.php at 5.1 laravel/framework
bladeからサービスを解決出来るようになった
blade側から直接サービスの解決ができるようになりました。
これで、いちいちviewにサービスを渡す必要は無くなりました。
@extends('layouts.app')
@inject('stats', 'StatisticsService')
<div>{{ $stats->getCustomerCount() }}</div>
HTTPに関するテストが提供されるようになった
Laravel5.1ではテストに関しても拡張が行われています。
特に、HTTP間の対話テストが充実しました。
public function testBasicExample()
{
$this->visit('/') // /にアクセスした時
->see('Laravel 5'); // Laravel 5が表示されてることを想定している
}
formのテストも自動化出来るようになり、非常に便利そうです。
Testing – Laravel – The PHP Framework For Web Artisans
Model Factoryでテストユーザー作成のひな形作成
ModelFactoryクラスが追加されました。
ModelFactoryは特にテストが便利になります。対象ファイルはdatabase/factories/ModelFactory.php
です。
まずは、定義しておいて
$factory->define(App\User::class, function ($faker) {
return [
'name' => $faker->name,
'email' => $faker->email,
'password' => str_random(10),
'remember_token' => str_random(10),
];
});
テスト用にレコードを作りたい場合は以下のメソッドを動かすだけです。
factory(App\User::class)->make();
今まで、seederにサンプル用の情報を定義していたかと思いますが、これで別ファイルに分離出来ます。
また管理者ユーザー等、ベースは上記でいいんだけど、追加でカラムに値を指定したいときにはdefineAs
を利用します。
$factory->defineAs(App\User::class, 'admin', function ($faker) use ($factory) {
$user = $factory->raw('App\User');
return array_merge($user, ['admin' => true]);
});
まとめ
見ていった結果、個人的に今回のアップデートはテストをしやすくしたり、artisanのコマンド周りの強化があり、利用者を便利にするアップデートだと感じました。
ドキュメントに関しても、量が増えたので今後は初心者にも優しいフレームワークになっていくのではないかと予想。
コメント