ぬるぽ

ゆるくプログラミングなどを語っていくブログ

【Laravel入門】Laravelのファサード(Facade)について

こんにちはmorimori(@TatsunoriMorita)です。

今日はLaravelのファサードについて説明したいと思います。

 

対象読者

Laravel初心者

 

はじめに

Laravelで最初に触るweb.phpで目にするRoute::getの構文。

見慣れない人にはクラスのstaticメソッドが使われている様にも見えますが、

これがファサードになります。

個人的にはプログラミングをしていて見慣れない構文が出てくると、どうやって検索したら良いか困る時がありますよねw

 

ファサードとは?

ファサードとは建築用語に由来するそうです。

ファサード - Wikipedia

プログラミングでデザインパターンを勉強したことがある人はFacadeパターンを思い浮かべる人もいるかも知れませんね。

Facadeパターン - Wikipedia

LaravelのファサードはGoFのデザインパターンの1つであるFacadeパターンを使用しています。

Facadeクラスを窓口として、裏ではいろんな機能を提供するクラスが連携しあっているものを、一つのクラスのように見せることで、使用する側は詳細を知る必要がないようにされています。

 

ファサードの種類

標準で提供されているファサードを37種類です。

Facade Class Reference - Laravel

Routeをはじめ、Request ,Responseなど使用頻度の高いものがファサードとして提供されています。

 

ファサードの実態はどこにあるの?

ファサードはimportを記述しなくても使えます。それはなぜでしょう?

答えはconfig\app.php aliasesが宣言されているためです。

aliasesの項目を見るとデフォルトで実装されているファサードの名前が確認できます。

そのためimportを記述しなくてもどこでも使用できるようになっています。

f:id:nooootion:20180913211441p:plain

 

まとめ

初めて触る言語やフレームワークの場合、見慣れない構文が出てきて驚くことも多いかと思いますが、調べてみると言語の強みや弱い部分、設計思想といったものが分かってきて、より親しみが持てるようになるので、尻込みしないで挑戦してみて下さい。