6月 102015
 

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のページをリンクで貼っておきます。

5.0のページ
5.1のページ

また、検索もサジェストしてくれるようになってます。

暗号化の方式が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のコマンド周りの強化があり、利用者を便利にするアップデートだと感じました。
ドキュメントに関しても、量が増えたので今後は初心者にも優しいフレームワークになっていくのではないかと予想。

Pocket

 Posted by at 5:31 PM

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>


*