Laravel の設定を見ると、シンボルにエイリアスが設定されていることがわかります。Response
'aliases' => array(
'Response' => 'Illuminate\Support\Facades\Response',
実際のクラスの名前空間、およびlaravelファサードオブジェクトへのグローバルアクセスにエイリアスを使用するLaravelの一般的なパターンにより、これはファサードのように見えResponse
ます。しかし、Illuminate\Support\Facades\Response
クラス の実際の定義を見ると
#File: vendor/laravel/framework/src/Illuminate/Support/Facades/Response.php
namespace Illuminate\Support\Facades;
//...
class Response {
Illuminate\Support\Facades
繰り返しますが、クラスが名前空間に存在することがわかりますが、クラスを拡張せずIlluminate\Support\Facades\Facade
、メソッドを実装してい ません。getFacadeAccessor
つまり、紛らわしいことに、実際にはファサードではありません。
これがなぜなのか誰か知っていますか?つまり、Facade 名前空間のこのクラスが実際の Laravel ファサードとして実装されていない理由は、説得力のあるフレームワークの理由ですか?