Laravelノート


実行環境

MAMP

環境構築

  1. composerをinstall
  2. composerを使ってlaravelをinstall
  3. laravelにpathを通す

基本的なコマンド

プロジェクトを作成する

laravel new プロジェクト名

こっちはlaravelのコマンドを利用している
または

composer create-project Laravel/laravel プロジェクト名 --prefer-dist

こっちはcomposer経由
--prefer-dist はzip形式でダウンロードするから高速らしい
defaultでは --prefer-source でこっちは git clone でソースを落としてくるらしい

アプリケーションの実行

cd laravelapp   //laravelプロジェクトに移動
mamp-php artisan serve

今の環境ではMAMPのPHPはmamp-phpでpathを通してある。alias使って。
これを実行したら、 http://localhost:8000 にアクセス。
これでトップページが表示されているはず。

これはPHPのビルトインサーバー機能を利用して実行している。
しかしあくまで動作確認用であり、本格的な運用に適したものではない。
ただこれを書いているのがだいぶ事後なんで、エラー出たら解決して。

ルーティング

ルーティングとは特定のアドレスにアクセスしたとき、どの処理を呼び出すかを管理するための機能。
Laravelでは基本的にappフォルダ配下にプログラムを追加編集していく。

Route::get('アドレス'/{パラメータ?}, function(&パラメータ = 'デフォルト'){ 
    return view('テンプレート名');
});

第一引数はアドレス。
アドレスの後に{}で括ることでパラメータを受け渡すことができる。
このパラメータには必須パラメータと任意パラメータがある。
任意パラメータの時は上記のように、パラメータの後に?をつけ、関数でデフォルト値を設定しておく。
第二引数はクロージャまたは次章で説明するコントローラーの関数を以下のように指定。

Route::get('アドレス', 'コントローラ名@アクション名')

viewという関数はテンプレートファイルをロードしレンダリングして返す。
テンプレートファイルはviewフォルダの "テンプレート名.blade.php"

ヒアドキュメント

$html = <<<EOF
<html>
</html>
EOF;

長文を変数に格納することができる。

コントローラー

Laravelの特徴としてMVCアーキテクチャというものがあり、そのひとつがコントローラ。
全体の制御を担当する。
必要に応じてModelを使ってデータを取得したり、Viewを使って画面表示を作成したりする。

コントローラの作成

mamp-php artisan make:controller コントローラ名

コントローラは、app/Http/Controllersに作成される。
コントローラはControllerクラスを継承したクラスで定義され、アクションと呼ばれる関数を保持する。

アクションとアドレスの関係

http://アプリケーションのアドレス/コントローラ/アクション
というのが一般的

シングルアクションコントローラ

1つのコントローラに1つのアクションしか存在しないもの。
唯一のアクション名は、__invoke()として定義する。
ルーティングのgetメソッドの第二引数にはコントローラ名だけの記述で良い。

Request, Response

  • use を使ってuse Illuminate\Http\Request or Response
  • アクションの引数にも Request, Response 追加

メソッド

  • $request -> url() : アクセスしたurlを返す。
  • $request -> fullUrl() : アクセスしたアドレスを完全な形で返す。(クエリ文字も)
  • $request -> path() : ドメイン下のパスだけ返す。

  • $this -> status() : アクセスに関するステータスコードを返す。

  • $this -> content() : コンテンツを取得する。

  • $this -> setContent(値) : 引数の値にコンテンツを変更する。

詳しい内容

【PHP超入門】HTTP(GET・POST)について
【[PHP] リクエストパラメータ・セッションに関するまとめ
【PHP超入門】Cookieとセッションについて

ビュー

Laravelではレンダリングは以下のテンプレートエンジンによって行われる。

  • PHPのソースコード
  • Blade

PHPテンプレート

  • テンプレートファイルは、resources/views の中
  • テンプレートは、各コントローラごとにフォルダを用意し、その中にそのコントローラーで使うテンプレートをまとめておくのが一般的。
  • ルートの設定またはコントローラーのアクション中でreturn view(フォルダ名.ファイル名);とする。 テンプレートはviwesフォルダから検索される。

変数の渡し方

ルートパラメータを使う場合


public function index()($id='zero'){
    $data = ['msg' => 'ベクトル解析'
             'id' => &id]
    return view('hello.index', $data)
}

クエリ文字列を使う場合


public function index()(Request $request){
    $data = ['msg' => 'ベクトル解析'
             'id' => $request -> &id]
    return view('hello.index', $data)
}

*ちなみに=>(ダブルアロー)は連想配列に値を代入するときに使う

Bladeテンプレートを使う

  • PHPテンプレートでは<?php echo $msg; ?>と書いていたが、 Bladeテンプレートでは、 {{$msg}}とかける。

  * {{ }}はHTMLエスケープしてあるから、そうさせたくないときには{!! !!}と書く
  

Bladeの構文

Laravel 5.5 Bladeテンプレート を参照