はじめに
実務 1 年目の Web エンジニアです。
こちらの記事は、Laravel に関する備忘録と覚えたことのアウトプットです。
こちらの記事はゆるゆるとシリーズ化していきます。
参考図書は三冊、現在二冊目を学習中です。
※非アフィリエイトリンク
PHPフレームワークLaravel入門
PHPフレームワーク Laravel実践開発
PHPフレームワーク Laravel Webアプリケーション開発
もし、Laravel の学習を始めた方がいらしたら一緒に見ていただけると嬉しいです。
ご指摘があればお願いします。
(元々 Ruby/Rails を使っていたので、同じ方がいたら何か参考になればと・・・)
今回は、
- ディレクトリ構成に関して
- 名前クラスと use によるクラスのインポート
- Requestクラス
- レイアウトの作成と継承
- おまけの単語メモ
についてメモをしております。
ディレクトリ構成に関して
忘れがちなディレクトリ構成で重要だと思ったポイントをまとめました。
- bootstrap アプリケーションが読み込まれるタイミングで実行される。
- public 公開されるフォルダ。JS のスタイルシートなどを入れておく。
- storage ファイルの保存場所。アプリケーションのプログラムが保存するログなどはここに置かれる。
- app > Http Web アプリケーションにアクセスした時の処理をまとめておく場所。
名前空間と use によるクラスのインポート
「名前空間」とは難しい日本語だが、どこにいるか?というような情報を示す意味合いだと思っている。
use
に関しては、別のクラスをインポートするために必要な記述である。
Rails の require みたいなものか…?
namespace App;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
Requestクラス
クライアントからサーバーへ送る情報がリクエスト、逆がレスポンス。
use Illuminate\Http\controllers;
で使えるようになる。
use Illminate\Http\Request;
function test(Request $request) {
$request->url();
}
※ちなみに、このメソッドの引数にRequestなどを渡すだけで利用できるようになる仕組みをメソッドインジェクションという。
依存性の注入。
使えるメソッドはこちら。(公式)
レイアウトの作成と継承
bladeテンプレートを使う場合、@sectionと@yieldという機能を使うことができる。
@section-@sectionend
で囲んだ部分が@yieldに出力される
なんかvueのコンポーネントと似てることができるなーと感じました。
本よりこちらの記事が参考になりました。
単語などtipsメモ
- ヒアドキュメント
PHP の長文テキストなどを記すときに使う。
<<EOF
みたいなやつ。 - シングルアクションコントローラー アクションが一個だけのコントローラーを作成した場合、routeからもアクション指定せずに、コントローラー名だけで呼び出せる設計。
- 当然Railsと同様コントローラーから変数をviewに渡すことができる。名前もつけられる
php:sample.php function index(Request $request) { return view("hello.index", ["msg" => $request->msg]); }
$msgという変数で呼び出すことができる。 - HTMLのエスケープ処理 {{!! この中に書いたHTMLタグなどはエスケープされ、テキストとして出力される !!}}
参考になった記事
- 依存性に関して https://qiita.com/harunbu/items/079ea728d2c9cf4f44d5
- クロージャに関して https://qiita.com/Yametaro/items/7a4521e23520947cc43e
- 全般 https://qiita.com/Masahiro111/items/82677e7cb2d5c1ba8386
- コンポーネント(やっぱりあった)・sectionとかと違ってファイルが違ってもいける https://qiita.com/taka_no_okapi/items/19bde6089ac1a22822d2
次回はコンポーザあたりからやろうかな…。