ECサイト運営開発記

PHPフレームワーク Laravelの使い方を中心とした通販サイトの開発日記

Laravel4で「HelloWorld」を表示させるまで

最近、ようやく、注目が集まってきたPHPのWebアプリケーションフレームワークLaravelのLaravel4 Beta4が
リリースされたので、HelloWorldを出力するまでの流れを簡単に書いていこうと思います。

【Laravel4のインストール】

  • Laravel4はLaravel3とは違ったインスール方法が採用されている。
{
	"require": {
		"laravel/framework": "4.0.*"
	},
	"autoload": {
		"classmap": [
			"app/commands",
			"app/controllers",
			"app/models",
			"app/database/migrations",
			"app/database/seeds",
			"app/tests/TestCase.php"
		]
	},
	"minimum-stability": "dev"
}
  • requireの項目に、"laravel/framework": "4.0.*" という記述が。
    • どういうことか?
      • https://packagist.org/packages/からrequireで指定されたパッケージのバージョンがダウロード&インストールされる。
      • https://packagist.org/packages/laravel/framework/へブラウザでアクセスすると、Laravelのパッケージ一覧が閲覧できる。
      • requireの項目に "laravel/framework": "4.0.*@dev"を指定すると最新版が、"laravel/framework": "v4.0.0-BETA3"を指定すると、BETA3がインストールされる。
        • requireでバージョンが指定されていない場合minimum-stabilityの値が"dev"となっているので、最新版が自動的にインストールされる形になる。
  • どうやってインストールする?
    • コマンドライン操作
      • composer.jsonがあるディレクトリで以下のコマンドを実行。
        • php composer.phar install
          • WindowsでPATHが通っている場合は composer install だけでOK。
          • vendorディレクトリが作成される
          • 依存関係をチェックした上で、プロジェクトにLaravelが使用しているライブラリ(Symfonyのライブラリ)なども含めてインストールしてくれる。


    • vendorディレクトリの大事なファイルたち
      • vendor/composerディレクトリのファイルたち
        • autoload_classmap.phpとautoload_namespaces.php
        • ここにはアプリケーションで使用するクラスマップと名前空間の定義が記述されている
          • 例えば、autoload_classmap.phpを開いてみる
<?php

// autoload_classmap.php generated by Composer

$vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir);

return array(
    'BaseController' => $baseDir . '/app/controllers/BaseController.php',
    'DatabaseSeeder' => $baseDir . '/app/database/seeds/DatabaseSeeder.php',
    'HomeController' => $baseDir . '/app/controllers/HomeController.php',
    /* 中略 */ 
    'User' => $baseDir . '/app/models/User.php',
);
    • composer.jsonで指定した、autoload classmapで指定したディレクトリ内のファイルとクラス名がマッピングされている事がわかる。
      • 簡単に言うと、ここに記述されているクラスファイルたちはちゃんと自動的にロードされますよ!っていうもの。
    • 同様にautoload_namespaces.phpを開くと、Laravel4の名前空間 Illuminate が定義されている事がわかる。
<?php

// autoload_namespaces.php generated by Composer

$vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir);

return array(
    'Symfony\\Component\\Translation\\' => $vendorDir . '/symfony/translation/',
    'Symfony\\Component\\Routing\\' => $vendorDir . '/symfony/routing/',
    'Symfony\\Component\\Process\\' => $vendorDir . '/symfony/process/',
    /* 中略 */
    'Illuminate' => $vendorDir . '/laravel/framework/src/',
);
  • で、ようやく、Laravel4の初期設定。
    • php artisan key:generate を実行しておく。すると、app/config/app.php のkeyに値がセットされる。
    • .htaccessを編集。
      • RewriteBase /project_root/public/ 任意のディレクトリを指定
        • 127.0.0.1/project_root/public/へアクセスする
          • Hello World!」が出力されていればとりあえずは成功。
          • app/routes.php にルーティングが定義されていおり、デフォルトではトップページのルーティングが定義されているだけ。詳しくは、別のエントリーで。
          • ちなみに、このViewファイルはapp/views/hello.php

とりあえずは、今回は、こんな具合で終わり。
次は、新しいコントローラーの作成とルーティングの定義やモデルファイルの作成を書いていこうと思います。