10
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Laravel5 First Impression

Last updated at Posted at 2014-12-08

開発版ではありますが、一足先に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を利用するように設定を変更します。)

[app-name]/config/database.php
	/*
	|--------------------------------------------------------------------------
	| 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はすごくいいフレームワークでした。
これが流行るのはよく分かる!

10
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?