Laravel 4.2

このリリースの完全な変更リストは、4.2をインストールし、php artisan changesコマンドを実行するか、GitHubで変更を確認してください。このセクションの記述は、リリースの主要な向上点と変更だけを示しています。

注意: 4.2のリリースまでの間に、多くの様々な小さなバグ修正や改善が、Laravel4.1に取り込まれてきました。ですから、Laravel4.1の変更リストも注意深くチェックしてください。

PHP 5.4が必要

Laravel4.2を動作させるには、PHP5.4以上が必要です。このPHPに関する動作要件の引き上げにより、Laravelキャッシャーなどのツールで、より記述的なインターフェイスを提供するための、トレイトのような新しい機能を使用することができるようになりました。更に、PHP5.4はPHP5.3よりも、大きな速度と効率の向上をもたらしてくれます。

Laravel Forge

Laravel Forgeは、新しいWebベースアプリケーションで、皆さんが選んだLinode、DigitalOcean、Rackspace、Amazon EC2のようなクラウド上で、PHPサービスを作成し管理する、シンプルな方法を提供しています。自動的なNginx設定、SSHキーアクセス、cronジョブの自動化、NewRelicとPapertrailによるサーバー監視、「Pushによるデプロイ」、Laravelキュー・ワーカー設定などをサポートしています。Forgeは皆さんのLaravelアプリケーション全部をランチする、最もシンプルで、手に入れやすい手法です。

インストールしたLaravel4.2の中の、app/config/database.php設定ファイルが、デフォルトでForge使用の設定ファイルになり、プラットフォームへ真新しいアプリケーションを便利にデプロイできるようにしてくれます。

Laravel Forgeの詳細な情報は、Forgeの公式Webサイトをご覧ください。

Laravel Homestead

Laravel Homesteadは、強固なLaravelとPHPアプリケーションをデプロイするための、公式Vagrant環境です。配布のためにboxをバッケージする前に、広大な範囲に渡る、必要なboxの準備作業は処理済みですから、非常に素早くboxを起動可能です。Homesteadは、Nginx1.6、PHP5.6、MySQL、Postgres、Redis、Memcached、Beanstalk、Node、Gulp、Grunt、Bowerを用意しています。HomesteadはシンプルなHomestead.yaml設定ファイルを含んでおり、複数のLaravelアプリケーションを一つのboxで管理しています。

インストールしたLaravel4.2に含まれており、初めから用意されているHomesteadデータベースを使用するために設定されている、app/config/local/database.php設定ファイルは、Laravelの初期インストールと設定をより便利にしています。

公式ドキュメントにも、Homesteadのドキュメントが追加されました。

Laravelキャッシャー

Laravelキャッシャーは、Stripeを使用し、購読の課金を管理するための、シンプルで記述的なライブラリーです。Laravel4.2で紹介し、キャッシャーのドキュメントも、Laravelのメインドキュメントに含めましたが、コンポーネントのインストールはまだオプションです。このリリースのキャッシャーは、多くのバグが修正され、複数通貨をサポートし、最新のStripe APIとコンパチブルです。

デーモン・キュー・ワーカー

Artisanのqueue:workコマンドは、--daemonオプションをサポートし、ワーカーを「デーモンモード」で開始できます。つまり、ワーカーはフレームワークを再起動することなく、ジョブの処理を継続します。この結果、CPU使用率は大幅に減らすことができましたが、アプリケーションのデプロイ手段がやや複雑になるという犠牲を払う必要があります。

デーモン・キュー・ワーカーに関する情報は、キューのドキュメントをご覧ください。

メールAPIドライバー

Laravel4.2は、新しいMailgunとMandrill APIドライバーをメール機能に導入しました。多くのアプリケーションにとって、SMTPを使用する選択肢よりも、メールを送信する手段として、より早く、より信頼が置けるでしょう。新しいドライバーは、Guzzle 4 HTTPライブラリーを使用しています。

ソフトデリート・トレイト

PHP5.4のトレイトを使用し、「ソフトデリート」の構造をより美しくし、「グローバルスコープ」を導入しました。この新しい構造により、グローバルトレイトに似た簡単な記述法ができ、フレームワーク内部の関心の分離をよりきれいに実現できます。

新しいSoftDeletingTraitに関する詳細はEloquentのドキュメントをご覧ください。

便利な認証とパスワードリマインダーのトレイト

Laravel4.2は、認証とパスワードリマインダーのユーザーインターフェイスに必要なプロパティを含むシンプルなトレイトを使用するようになりました。これにより、初めから含まれているデフォルトのUserモデルファイルをより美しく提供できます。

シンプル・ペジネーション

新しいsimplePaginateメソッドが、クエリーとEloquentビルダーに追加され、ペジネーションビューに、シンプルな「次」と「前」リンクを使用したい場合に、より効率的なクエリーが行えるようになりました。

マイグレーション時の確認

実働時には、破壊的なマイグレーション操作には、確認を尋ねるようになりました。コマンドをプロンプト無しで実行する場合は、--forceオプションを使用してください。

Laravel 4.1

完全な変更リスト

今回のリリースの完全な変更リストは、インストールした4.1でphp artisan changesコマンドを実行することで表示されます。もしくは、GitHub上の変更JSONファイルをご覧ください。

新SSHコンポーネント

全く新しいSSHコンポーネントがこのリリースで導入されました。これが提供する機能は、SSHを使い簡単にリモートサーバーでコマンドを実行することです。詳しくは、SSHコンポーネントのドキュメントをご覧ください。

新しいphp artisan tailコマンドは、この新SSHコンポーネントを活用しています。詳細は、tailコマンドドキュメントをご覧ください。

TinkerとBoris

php artisan tinkerコマンドは、システムがサポートしている場合、Boris REPLを活用します。この機能を利用するには、readlinepcntl PHP拡張をインストールする必要があります。これらの拡張が用意出来な場合は、4.0以上のシェルが利用できます。

Eloquentの向上

新しいhasManyThroughリレーションがEloquentに追加されました。どのように使用するかは、Eloquentドキュメントをご覧ください。

また、新しいwhereHasメソッドがリレーションの条件に基づいてモデルを取得するために導入されました。

データベースRead/Write接続

クエリービルダーとEloquent使用時に、データベース層でRead/Write接続により接続を自動的に分けられるようになりました。詳細はドキュメントをご覧ください。

クエリーの優先度

queue:listenコマンドに、カンマ区切りでリストを指定することによる、キュー処理のプライオリティーがサポートされました。

失敗したキュージョブの処理

queue:listenへ新しい--triesスイッチをつけることで、失敗したジョブを自動的に処理する機能が追加されました。失敗したジョブに関するより詳しい説明は、キューのドキュメントをご覧ください。

キャッシュタグ

キャッシュの"section"は"tags"に置き換わりました。キャッシュのタグにより、複数のタグをキャッシュアイテムにつけることができます。そして、タグを指定することで、一度に全部のアイテムを消去できます。キャッシュタグの使い方の情報は、キャッシュのドキュメントに記載されています。

柔軟になったパスワードリマインダー

パスワードのバリデーション、セッションにフラッシュアイテムとして保存するメッセージの使用など、パスワードリマインダー(リセット)は、開発者が柔軟に使用できるように変更されました。修正パスワードリマインダーエンジンの詳細は、ドキュメントをご覧ください。

ルーティングエンジンの向上

Laravel 4.1ではルーティング層が完全に書き換えられています。APIに変更はありませんが、ルートの登録は、4.0と比べ完全に100%早くなっています。エンジン全体はとてもシンプルになり、ルートの解釈時のSymfony Routingへの依存が小さくなりました。

セッションエンジンの向上

このリリースでは、新しいセッションエンジンも導入しました。ルーティングでの向上と同様に、新しいセッション層はより小さく、早くなりました。Symfonyの(そのためにPHPのも)セッション処理機能を使用しなくなり、よりシンプルでメンテナンスしやすいカスタム処理を使用しています。

Doctrine DBAL

もしrenameColumn機能をマイグレーションで使用している場合、composer.jsonファイルにdoctrine/dbalパッケージを追加する必要があります。このパッケージはデフォルトではLaravelに含まれなくなりました。