ここではLaravelの環境設定後、初めてLaravelを学ぶ人向けに説明します。
プロジェクト作成
laravel new
によりプロジェクトを作成します。プロジェクト名は自由ですが、これから作るWebサービスの内容が分かる命名をします。(今回は勉強用でdemoで始まる命名にしています)
laravel new demoApp
cd demoApp
コマンド投入後出来上がるディレクトリに移動し、内容を確認します。
app・・・・・・Webアプリケーションのプログラム本体の置き場所。開発はここが中心。
bootstrap・・・起動の最初に行われる処理が入っている。
database・・・データベース関連のファイルが入っている。
resources・・・ビュー(Blade)など画面に関するファイルが入っている。開発はここも対象。
tests・・・・・ユニットテストに関するファイルが入っている。
config・・・・・設定に関するファイルが入っている。
public・・・・・JS/CSSなどのWeb公開ファイルが入っている。
routes・・・・・どの処理を呼び出すかのルーティング情報が入っている。開発はここも対象。
storage・・・・一時ファイルやログが置かれる場所。
vendor・・・・フレームワーク本体や他のパッケージの置き場所。
appの中はさらに下記のようなフォルダがあります。
Console・・・コンソールプログラムの置き場所。
Exceptions・・エラー発生時の処理を行うプログラムの置き場所。
Http・・・・・Webアプリの処理を行うプログラムの置き場所。(開発対象)
Providers・・・各種の処理を提供するサービスプロバイダーのプログラムの置き場所。
なお、開発中のアプリケーションのサーバ起動は
php artisan serve --port 8080
です。ポート番号はデフォルトでは8000です。Cloud9の環境ではセキュリティの関係でポート番号を8080にする必要があります。ご注意ください。
ちなみにartisanはフランス語で「職人」という意味で、多分、アーチサンと読みます。Laravelの定番コマンドと覚えておいてください。
最初にやることとしてアプリケーションのタイムゾーンやロケール(言語設定)で、次のように設定します。
'timezone' => 'Asia/Tokyo',
'locale' => 'ja',
ルーティング
ルーティングはURLアドレスに対しどの処理を呼び出すかの道すじを決めています。
具体的にはroutes/web.php
を下記のように書いて動きを確認してみましょう。
Route::get('/', function () {
return "This is demoApp";
// return view('welcome');
});
サーバを起動し、ブラウザで確認すると、画面にdemoApp
と表示されたと思います。
つまりRoute::get
メソッドを使って
Route::get(URLアドレス , 表示する処理)
と書くことで、アドレスからどの処理を呼ぶかのルーティングを定義しています。
(GETというHTTP通信要求でURLに対して、返すべき内容を決めています)
デフォルトで記述されていたコードのRoute::getメソッドの第二引数は
function () {
return view('welcome');
}
でしたが、これは名前のない関数を定義してその場でviewを呼び出してHTMLを返しています。
実は、'welcome'
は、
resources/views/welcome.blade.php
というBlade(ブレード。Laravelのビューを作るためのテンプレートファイル)を指しています。
GETパラメータの受け取り
HTTP通信のGETはブラウザから要求されるアドレスにパラメータを埋め込んでサーバサイドで受け取ることができます。
ルーティング情報の中でアドレス/a/○○○
の時に○○○の部分を変数$strとして受け取れるようにしてみましょう。(compactは変数名とその値から配列を作成するPHP関数です)
Route::get('/a/{str}',function ($str) {
return view('a',compact('str'));
});
Bladeでは$str
を{{}}をつけて呼び出します。
<!doctype html>
<html lang="{{ app()->getLocale() }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Laravel DemoApp</title>
</head>
<body>
<h1>{{$str}}</h1>
</body>
</html>
サーバを起動し、http://[servername]/a/アイウエオ
というアドレスでブラウザで確認すると、画面にアイウエオ
と表示されたと思います。
アドレス部分の「アイウエオ」がビューであるa.blade.php
に渡されて表示されたわけです。