こんにちはmorimori(@TatsunoriMorita)です。
今日はLaravelのファサードについて説明したいと思います。
対象読者
Laravel初心者
はじめに
Laravelで最初に触るweb.phpで目にするRoute::getの構文。
見慣れない人にはクラスのstaticメソッドが使われている様にも見えますが、
これがファサードになります。
個人的にはプログラミングをしていて見慣れない構文が出てくると、どうやって検索したら良いか困る時がありますよねw
ファサードとは?
ファサードとは建築用語に由来するそうです。
プログラミングでデザインパターンを勉強したことがある人はFacadeパターンを思い浮かべる人もいるかも知れませんね。
LaravelのファサードはGoFのデザインパターンの1つであるFacadeパターンを使用しています。
Facadeクラスを窓口として、裏ではいろんな機能を提供するクラスが連携しあっているものを、一つのクラスのように見せることで、使用する側は詳細を知る必要がないようにされています。
ファサードの種類
標準で提供されているファサードを37種類です。
Facade Class Reference - Laravel
Routeをはじめ、Request ,Responseなど使用頻度の高いものがファサードとして提供されています。
ファサードの実態はどこにあるの?
ファサードはimportを記述しなくても使えます。それはなぜでしょう?
答えはconfig\app.php でaliasesが宣言されているためです。
aliasesの項目を見るとデフォルトで実装されているファサードの名前が確認できます。
そのためimportを記述しなくてもどこでも使用できるようになっています。
まとめ
初めて触る言語やフレームワークの場合、見慣れない構文が出てきて驚くことも多いかと思いますが、調べてみると言語の強みや弱い部分、設計思想といったものが分かってきて、より親しみが持てるようになるので、尻込みしないで挑戦してみて下さい。