LaravelでHello World無双する話

絶対ハッピー!! (イチ・二)
全体ハッピー!! (イチ・二)
さぁ 第一スマイル体操始め!!
好きな事をひと…

はぅ〜 スマイル体操なんて踊っていた。
スマイル体操

さてさて、 今回はLaravel入門という事で簡単な例を頑張って考えてみました
と言ってもHello Worldを大量に連発、無双的に書きまくりましたw

始める前に、Laravelとは?になってきますかね。
Laravelとは、PHPのフレームワークです。
https://laravel.com/
MVC+DAOって感じですかね。CLI系もありますから… そうとも言えませんが…
一言で言うと、Webアプリケーションフレームワークっすな。

DI(依存性注入)って部分がちょっと特徴かな
個人的にはJavaのEEとかSpring framework使えるから、その辺りに当てはめると分かりやすいかな。
DIとは?って部分が大きなポイントになりますが…
定義したら、突っ込んで利用できる。
んでもって、フレームワークの形となると、骨格が既にあるので定義と少ない拡張クラスだけでできあがります!
… 自分でも人に説明できるほど理解できないのかも…
環境のビルダーがクラスを生成してくれて、サービスに注入してくれる?
あぁぁぁ EEの Beansして、Springして、過疎結合勉強すれば理解出来るわ!w

逆にLaravelでDIを学ぼうと思うと正直、おまじないレベルが多すぎる気がしますね。
バインド部分がキャッシュされることが多いので、おまじないコマンドをとりあえず連発します。

んでもってポイントですが… PHPは、コンパイラ言語ではありません!インタプリタ言語です!
バインドうまくいっていなくても問題なく動作してくれるめっちゃうれしいですね(皮肉です

インストール方法は…
正規ドキュメントを読んでください : https://laravel.com/docs/5.6
極力最新の5.6をおすすめします… (古すぎると記述方法すら変わるのでおすすめしません、書籍も)

開発環境に

  • php
  • composer

をインストールして、次に進んでください!

プロジェクトの作り方!

composer create-project laravel/laravel sample-hello-laravel 5.6

うだうだ動いて、プロジェクト作成完了します!

環境設定ファイルを作成

はい、次に、環境設定ファイルを作成します。
サンプルからコピーします

cp .env.example .env

アプリケーションキー

次にアプリケーションキーを作ります。
作成したプロジェクト(sample-hello-laravel)に入って、artisanコマンドを実行します

php artisan key:generate

はい、これで開発環境は終了です。
webで実行してみます

php artisan serve
Laravel development server started: <http://127.0.0.1:8000>

これで初期画面が表示されれば、開発環境の構築は終了です。

ふぅ〜 結構めんどくさいでしょ。
ここから、hello worldを紹介します。

Step1.一番シンプルなhello world

画面に、hello worldの文字列を表示しましょう
routesのweb.phpが行き先板的な存在ですのでそこに新しい行き方を追加します。

vi routes/web.php
Route::get('/step1',function(){
echo 'hello world';
});

ブラウザにhttp://127.0.0.1:8000/step1でhello worldの文字が出ましたね。

うん、しんぷるぅ〜〜
解説は… 要らないでしょう
Route::getは宛先、getのぉ〜って事です、postならpostのになります
ここに詳しく書いています … : https://laravel.com/docs/5.6/routing
まるなげぇ〜

Step2 bladeでhello world

bladeで、hello worldと言う事で、laravel使う人がWebページをecho & printで書くことは少ないでしょうw
そう、テンプレータです!Laravelではbladeと言うモノが付いていますのでそいつを使いましょう!
bladeの詳細は… : https://laravel.com/docs/5.6/blade
まるなげぇ〜

始めに、bladeファイルを作ります。

vi resources/views/step2.blade.php

拡張子にbladeを付いていますが、ま、そういうことですw
中身は、hello worldを表示するだけです。

<html><body>Hello World</body></html>

はいはい〜
次に、step2を来たら、このファイルを参照するようにrouteに追加します!

vi routes/web.php
Route::get('/step2',function(){return view('step2');});

これで、アクセスします!
http://127.0.0.1:8000/step2

さっきと変わらねぇ〜w
カール使ったら分かるけどねw

curl http://127.0.0.1:8000/step1
hello world
curl http://127.0.0.1:8000/step2
<html><body>Hello World</body></html>

Step3 Classを使ってHello World

普通に、web.phpにだらだら書くとかまったくナンセンス… だめっしょw
そう、だめっしょなので、web.phpに来たリクエストをコントローラクラスに引き継ぎます。
手で作っても良いですが、今回はコマンドで作ります。

php artisan make:controller Step3Controller
Controller created successfully.

出来あがりぃ!
… クラスが出来ただけですので、クラスの内容を書きます。
Controllerはapp/Http/Controllers/にできあがります。
もう一度言います。app/Http/Controllers/ にできあがります。
app/Http/Controllers/にコントローラクラスを作ります…

連呼したのは意味はありませんけど、何度も編集しているのに疲れてくるとHttpを忘れることがあるのでw
はいはい、内容を書きます!

vi app/Http/Controllers/Step3Controller.php
class Step3Controller extends Controller{
//
public function index(){
echo 'Hello World';
}
}

はい、内容を抜粋するとこんな感じです、index() メソッドを追加しています。
中で、echo ‘Hello World’を実行しているとおり、indexをリクエストが来ると表示が出るだけです。

行き先を指定します!!!

vi routes/web.php
Route::get('/step3','Step3Controller@index');

はい、クラスとメソッド名を文字列として渡しただけですね。
するってぇ〜となんだい。
これだけかい?
そう、これだけです。
http://127.0.0.1:8000/step3

次!

Step4 Classを使ってbladeのHello Worldを使う

はい、絶望的なセンスのタイトルになってきましたが、そういうことです。
先のecho から viewに引き渡すわけです。

コントローラー作って、

php artisan make:controller Step4Controller

blade作って

vi resources/views/step4.blade.php
<html><body>Hello World</body></html>

行き先を追加して

vi routes/web.php
Route::get('/step4','Step4Controller@index');

コントローラを編集します

vi app/Http/Controllers/Step4Controller.php
class Step4Controller extends Controller{
//
public function index(){
return view("step4");
}
}

step2のbladeと同じですね、return view(“step4”)の部分がポイントです。
viewのstep4を使うと言う事ですw

やっと次!!

Step5 MVCのHello Worldに俺はなるっ!

さてさて、ここまで来て謎が1カ所残りますね。
ん?staticページでは?
ま、Step1 , Step3 のechoならecho部分をイジれば良いのは分かりますが、bladeに値は?… 渡せます!
今回は、controller側で作った日付をHello Worldの後ろに付けましょう。
コントローラを作って行き先を追加します。

php artisan make:controller Step5Controller
vi routes/web.php
Route::get('/step5','Step5Controller@index’);

次にbladeの作成ですが、ここでポイントがあります。

vi resources/views/step5.blade.php
<html><body>Hello World{{ $hoge }}</body></html>

なんか、{{}}に括られた、変数があります

vi app/Http/Controllers/Step5Controller.php
class Step5Controller extends Controller{
//
public function index(){
return view("step5",['hoge' => date('c')]);
}
}

これで、アクセスすると
Hello Worldの後ろに日時が表示されます!

ちょっぴり解説すると、Controller側で連想配列でviewの第二引数に渡してやれば、変数としてbladeに認識します。
blade側では、{{}}を利用することで変数を表示します @yeildでも良いらしいですが、あんまり使わないねw

次… と思ったけど眠い…
続きはまた今度なり!