WinRoadのLaravel4初心者講座

次世代PHPフレームワークのLaravel4を初心者向けに解説して参ります。

Winroad徒然草の管理人がお届けします
Laravel5(開発版)のインストール

Laravel5(開発版)のインストール

このエントリーをはてなブックマークに追加

今月中にリリース予定のLaravel5ですが、待ちきれないので、開発版をインストールして試してみたいと思います。

インストール

  1. まず、コマンドプロンプトを起動したら、下記のコマンドを入力します。
    • composer create-project laravel/laravel C:\xampp\htdocs\laravel dev-develop
    • 上記のC:\xampp\htdocs\laravelには、インストールしたいフォルダ名(場所)を指定します。
  2. laravel5は、フォルダ構成が大幅に変更になっています。
  3. ルートフォルダ(laravel直下のトップフォルダ)内には、app、bootstrap、config、database、public、resources、strage、tests、vendorがあります。
  4. appフォルダ内には、Console、Http、Providersフォルダがあります。
  5. そして、Httpフォルダの中に、Controllers、Middleware、Requestsフォルダと、kernel.phpファイルとroutes.phpファイルがあります。
    • 2014-11-06 10-24-02
  6. laravel4とは、大幅に変更されていますので、最初は戸惑います。また、リリースまでにさらに変更になる可能性もあります。※ほんの1週間前までは、routes.phpファイルすらありませんでした。

ルーティング

  1. まず、気になるのが、ルーティングですが、app/Http/routes.phpファイルでルーティングを指定します。
  2. デフォルトのroues.phpの中身を見てみましょう。
    • <?php
      $router->get('/', 'HomeController@index');
      $router->controller('auth', 'AuthController');
      $router->controller('password', 'PasswordController');
  3. デフォルトでは、3つのルーティングが指定されています。
  4. まず、トップページの指定ですが、HomeControllerのindexメソッドが指定されています。
  5. そして、AuthControllerと、PasswordControllerがレストフルコントローラとして指定されています。
  6. Laravel4では、下記のような指定になるはずですので、違いを確認して下さい。
    • <?php
      Route::get('/', 'HomeController@index');
      Route::controller('auth','AuthController');
      Route::controller('password','PasswordController');

コントローラ

  1. それでは、コントローラの中身を確認してみましょう。下記のようになっています。
    • <?php namespace App\Http\Controllers;
      class HomeController extends Controller {
      public function Index()
      {
       return view('hello');
       }
      }
  2. まず、一番の違いは、名前空間の指定です。laravel4では、コントローラは名前空間を指定する必要が無かったのですが、laravel5からは、名前空間の指定が必須になるようです。
  3. 試しに、<?php //namespace App\Http\Controllers; と、名前空間の指定箇所をコメントアウトしてみると、下記のようにエラーが表示されます。
    • 2014-11-06 10-57-50
  4. そして、ビューの指定ですが、View::make()では、なくて、view()に変更になっています。
  5. ここもView::make(‘hello’)に変更してみると、下記のようなエラーが表示されます。
    • 2014-11-06 11-03-30
  6. つまり、「Viewクラスが、App\Http\Controllersフォルダ内に見つかりません。」と表示されます。
  7. Laravel4のようにViewクラスを使うには、use演算子で指定(インポート)する必要があります。つまり、下記のように修正すれば、Viewクラスのmakeメソッドが使えるようになります。
    • <?php namespace App\Http\Controllers;
       use Illuminate\Support\Facades\View;
       class HomeController extends Controller {
       public function Index()
       {
       //return view('hello');
       return View::make('hello');
       }
       }

ビュー

  1. ビューの場所は、resourcesフォルダ内に移動になっています。resourcesフォルダ内には、assetsフォルダ、langフォルダとviewsフォルダがあります。
  2. ビューに関しては、場所が変更になった程度で他に特段明記するような変更は無いように思われます。

モデル

  1. モデルに関してですが、laravel4のようにモデルだけを格納しておくようなフォルダはなくなったようです。モデルは、好きなように好きな場所に作成して下さいと言うことでしょうか。
  2. モデルの例として、app/User.phpファイルが作成されていますので、中身を確認してみましょう。
    • <?php namespace App;
      use Illuminate\Auth\UserTrait;
      use Illuminate\Database\Eloquent\Model;
      use Illuminate\Contracts\Auth\User as UserContract;
      use Illuminate\Auth\Passwords\CanResetPasswordTrait;
      use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;
      use Illuminate\Database\Eloquent\SoftDeletingTrait;
      class User extends Model implements UserContract, CanResetPasswordContract {
      use UserTrait, CanResetPasswordTrait, SoftDeletingTrait;
      /**
       * The database table used by the model.
       *
       * @var string
       */
       protected $table = 'users';
      /**
       * The attributes excluded from the model's JSON form.
       *
       * @var array
       */
       protected $hidden = ['password', 'remember_token'];
       protected $dates = ['deleted_at'];
       
      }
    • 7行目と22行目は、ソフトデリートを使用するために、私が追加しました。
  3. まず、Laravel5では、名前空間は必須ですので、namespace App;で現在のファイルのある場所を指定します。
  4. そして、このUserモデルで使用するクラスやトレイトをuse演算子で指定します。
  5. 尚、このUserモデルを試しにHomeControllerで使用してみます。HomeControllerを下記のように修正します。
    • <?php namespace App\Http\Controllers;
      use App\User;
      class HomeController extends Controller {
      public function Index()
       {
       $user=User::find(1);
       return view('hello',compact('user'));
       }
      }
    • Userモデルを使用するには、2行目のuse演算子が必要になってきます。尚、2行目のuse演算子を使用しないで、6行目を下記のように記述してもOKです。
    • $user=\App\User::find(1);
  6. そして、app/resources/views/hello.phpファイルの<h1>You have arrived.</h1>を<h2>ようこそ<?php echo $user->name;?>さん</h2>と変更したら下記のように表示されます。
    • 2014-11-06 12-04-44

まだ、さわり程度ですが、使ってみた感想は、Laravel4に比べてコードの記述量が増えています。しかし、Laravelの特徴であった記述の簡易さを多少犠牲にしてでも自由度を追求した結果でしょうか。好みの分かれるところだと思いますが、私としては歓迎しています。いまからリリースが楽しみです。

« »

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です