開発版ではありますが、一足先にLaravel5を利用してみました。
Laravel5
今一番勢いに乗っているPHPのフレームワークLaravel。
現在のメジャーバージョン4系でも十分にモダンな機能を備えていますがそこで止まることなく、
来年さらにメジャーバージョンアップを予定しています。
プロジェクト作成
composerを使ってフレームワークコアのインストールと一緒にスケルトンも作成するようです。
php composer.phar create-project laravel/laravel [app-name] dev-develop --prefer-dist
インストールすると以下の様なディレクトリやファイルが出来ます。
app-name
app/
assets/
bootstrap/
config/
database/
lang/
public/
strage/
tests/
vendor/
views/
.bowerrc
.env.example
.gitattributes
.gitignore
artisan
bower.json
composer.json
composer.lock
gulpfile.js
package.json
phpunit.xml
readme.md
アプリケーションのコードはapp/
以下に書いていくようです。
Migration
Laravelではデフォルトのプロジェクトでユーザー認証機能がついてきます。
この機能を有効にするにはartisan
というコマンドラインツールを利用してテーブルスキーマのマイグレーションを行います。
まずは、config/database.php
でDBの設定を行います。
(デフォルトではMysqlを利用するようになっていますが、用意するのが面倒なのでsqliteを利用するように設定を変更します。)
/*
|--------------------------------------------------------------------------
| Default Database Connection Name
|--------------------------------------------------------------------------
|
| Here you may specify which of the database connections below you wish
| to use as your default connection for all database work. Of course
| you may use many connections at once using the Database library.
|
*/
- 'default' => 'mysql',
+ 'default' => 'sqlite',
マイグレーションの機能を有効にするために、以下のコマンドを実行します。
php artisan migrate:install
このコマンドを実行すると、DBにmigrationsというテーブルが作成されます。
このテーブルで、migrationがどこまで実行されているか?というバージョンの管理を行います。
この状態でphp artisan migrate:status
を実行すると以下の様に2つのマイグレーションが未実行であることが確認出来ます。
+------+------------------------------------------------+
| Ran? | Migration |
+------+------------------------------------------------+
| ✗ | 2014_10_12_000000_create_users_table |
| ✗ | 2014_10_12_100000_create_password_resets_table |
+------+------------------------------------------------+
このマイグレーションを実行するために以下のコマンドを実行します。
php artisan migrate
Do you really wish to run this command? と聞かれるのでエンターを押して実行します。
再度、php artisan migrate:status
を実行するとマイグレーションが実行されたことが確認出来ます。
+------+------------------------------------------------+
| Ran? | Migration |
+------+------------------------------------------------+
| ✔ | 2014_10_12_000000_create_users_table |
| ✔ | 2014_10_12_100000_create_password_resets_table |
+------+------------------------------------------------+
これでサーバを立ててアプリケーションにアクセスすると、ユーザの認証機能が利用出来るようになります。
これはかなり便利ですね!!
Http/Middleware
MiddlewareにはHttpリクエストのフィルタリングを行う機能を定義します。
[app-name]/app/Http/Middleware
以下に作成します。
Middlewareを有効にするには作成したクラスをHttp/Kernel
クラスに設定するようです。
Http/Controller
Laravel5のコントローラは[app-name]/app/Http/Controllers
以下に作成します。
コントローラの作成はartisan
コマンドで行う事が可能で、
php artisan make:controller FooController
というコマンドを実行することで、CRUDベースのメソッドをもったコントローラを作成することが可能です。
(CRUDベースのオプションが必要ない場合は--plain
オプションをつけることで空のコントローラクラスを作成出来ます。)
URLによるリソースフォーマットの変更
残念ながら、LaravelではURLによってリソースのフォーマットを変更することは出来ないようです。
Http/Requests
RequestはHttpリクエストによるパラメタ、パラメタに対する処理等を定義します。
[app-name]/app/Http/Requests
以下に作成します。
リクエストパラメタのバリデーションなどはここで行えるようです。
Services
ビジネスロジックに関する処理はここでしょうか?
まだ詳しいドキュメントがありませんでした。
DBアクセス層(ORM)
スケルトン生成時には[app-name]
以下にUserクラスが作成されていました。
流石に、[app-name]
にクラスを置いていくことは無いと思いますが、その辺りの詳しいドキュメントはまだありませんでした。
また、コマンドラインツールからもORMクラスを生成するオプションは見つかりませんでした。
テンプレート
Laravelではテンプレートエンジンにblade
を利用しています。
まだ詳しいドキュメントがありませんでしたが、Laravel4とそう変わらないはずです。
asset
下記投稿に良くまとまっています。
http://qiita.com/localdisk/items/72bcbe71734253d1416f
独断と偏見による総評
まだ開発中のため、全てを試すことは出来ませんでしたが、
デフォルトで用意しようとしているフレームがかなり綺麗です。
Laravel5ではModelというディレクトリを与えないため(これから出来るかもしれないけど…)、
Fat modelになるような開発が起こりにくいと思われます。
またController層もHttpというディレクトリの中にRequestやMiddlewareというディレクトリがあるため、
Fat controllerというのも出来上がりにくいのではないでしょうか?
どのフレームワークもそうなんでしょうけど、グローバルに関数を展開するのはやっぱり頂けない。
総合的に見てLaravelはすごくいいフレームワークでした。
これが流行るのはよく分かる!