laravelで使われているファザードについて調べてみた

2018年9月24日laravel, PHP, フレムワークlaravel, ファザード


Notice: Trying to access array offset on value of type bool in /var/www/html/wordpress/wp-content/plugins/internal-link-building-plugin/internal_link_building.php on line 86

Notice: Trying to access array offset on value of type bool in /var/www/html/wordpress/wp-content/plugins/internal-link-building-plugin/internal_link_building.php on line 105
laravelで使われているファザードについて調べてみた
laravel クエリビルダについて調べてみた
laravelでのupdateOrCreateメソッド
laravel でのconfigからパラメータ取得
php artisanコマンドについてまとめてみた
laravel 導入時に躓いた点
laravel 5.6でログインページがみれない(2)
laravel 5.6でログインページがみれない(1)

ファザードとは

laravelでの開発を進めていて、ファザードという用語を聞くようになりましたが、いまいち理解できていないので、この際調べてみて理解を深めようということでまとめてみました。
ファザードとは、公式ドキュメントによると, 

  • アプリケーションのサービスコンテナに登録したクラスへ、「静的」なインターフェイスを提供
  • Laravelのほとんどの機能に対して、ファサードが用意されている
  • 静的メソッドよりもテストの行いやすさと柔軟性を保ちながらも、簡潔で記述的であるという利点がある。

使われ方

Route::get('/', 'WelcomeController@index');

Routeクラスのstaticで宣言されたgetメソッドを使っていることになりますが、

Route=> Illuminate\Support\Facades\Route::class

のように、Routeクラスが Illuminate\Support\Facades\Routeでメソッドがgetを使っていることになります。

ファザードクラス

vendor\laravel\framework\src\Illuminate\Support\Facades\Route.php

class Route extends Facade$

 32 {$

 33     /**$

 34      * Get the registered name of the component.$

 35      *$

 36      * @return string$

 37      */$

 38     protected static function getFacadeAccessor()$

 39     {$

 40         returnrouter‘;$

 41     }$

 42 }$

ファザードクラスである、Routeクラスを見たところ、staticなメソッドにgetというものが存在していませんでした。

ファザードクラス一覧

\config\app.phpに書いてありました。


 Illuminate\Auth\AuthServiceProvider::class,$

145         Illuminate\Broadcasting\BroadcastServiceProvider::class,$

146         Illuminate\Bus\BusServiceProvider::class,$

147         Illuminate\Cache\CacheServiceProvider::class,$

148         Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class,$

149         Illuminate\Cookie\CookieServiceProvider::class,$

150         Illuminate\Database\DatabaseServiceProvider::class,$

151         Illuminate\Encryption\EncryptionServiceProvider::class,$

152         Illuminate\Filesystem\FilesystemServiceProvider::class,$

153         Illuminate\Foundation\Providers\FoundationServiceProvider::class,$

154         Illuminate\Hashing\HashServiceProvider::class,$

155         Illuminate\Mail\MailServiceProvider::class,$

156         Illuminate\Notifications\NotificationServiceProvider::class,$

157         Illuminate\Pagination\PaginationServiceProvider::class,$

158         Illuminate\Pipeline\PipelineServiceProvider::class,$

159         Illuminate\Queue\QueueServiceProvider::class,$

160         Illuminate\Redis\RedisServiceProvider::class,$

161         Illuminate\Auth\Passwords\PasswordResetServiceProvider::class,$

162         Illuminate\Session\SessionServiceProvider::class,$

163         Illuminate\Translation\TranslationServiceProvider::class,$

164         Illuminate\Validation\ValidationServiceProvider::class,$

165         Illuminate\View\ViewServiceProvider::class,$

次に調べること

・サービスコンテナ
・サービスプロバイダー