#実行環境
MAMP
#環境構築
- composerをinstall
- composerを使ってlaravelをinstall
- 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)について]
(https://qiita.com/7968/items/4bf4d6f28284146c288f)
[【[PHP] リクエストパラメータ・セッションに関するまとめ]
(https://qiita.com/mpyw/items/7852213f478e8c5a2802)
[【PHP超入門】Cookieとセッションについて]
(https://qiita.com/7968/items/ce03feb17c8eaa6e4672)
#ビュー
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テンプレート を参照