この記事は以下の書籍を参考にして執筆しました。
ルーティング
ルート情報の基本(GET)
Route::get(アドレス,関数等)
第2引数はクロージャ。
function (){
return 値;
}
returnで返される値が表示内容。
view
view(テンプレ名)
テンプレファイルをトードしてレンダリングして返す。
テンプレはresources/views
フォルダの中に作る
コントローラの利用
シングルアクションコントローラの利用
1つのコントローラに1つのアクションだけしか用意しないという設計のこと
要するに
コントローラ:アクション=1:1
class クラス名 extends Controller
{
public function __invoke()
{
//アクション処理
}
}
これ以外にアクションメソッドは用意しない。
ルート情報の記述も変わってくる。
Router::get('アドレス','コントローラ名');
###invokeはPHPの基本機能
__invokeはPHPのマジックメソッド
__invokeはそのクラスのインスタンスを関数的に実行する。
インスタンスに()をつけて関数として呼び出せる。
したがってコントローラに限らず一般的なクラスも「インスタンスをそのまま関数として実行させたい」という場合に利用される。
リクエストとレスポンス
ResponseとRequestをアクションメソッドで利用するにはこうする
public function index(Request $request,Response $response){...
引数に追加するだけで使えるようになる。
###なぜ追加するだけで使えるのか
理解のためには「サービス」と「サービスコンテナ」の機能を知る必要がある。
アクションメソッドに引数を追加することで、サービスコンテナによって対応するクラスのインスタンスがその引数に渡されていた。
この機能はメソッドインジェクションという
PHPテンプレートの利用
ビューについて
テンプレはLaravelのビューを担当する。
ルート情報でテンプレを表示する
viewメソッド
view('フォルダ名.テンプレ名')
テンプレはviewsフォルダから検索される。
例えば、view('hello.index')
なら
views/hello
フォルダの
index.php
ファイルが読み込まれる。
単にview('hello')
だけならhello
という名前のファイルを探してしまう。
サービスとビューコンポーザ
ビューコンポーザ
コントローラとは別にビジネスロジックを使って必要な情報などを処理しビューにデータを結合する機能。
ビューのビジネスロジック
ビューコンポーザを作ってアプリに登録することでビューをレンダリングする際に処理を自動実行できる。