問題タブ [laravel-facade]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - Laravelのレスポンスファサードがファサードではないのはなぜですか?
Laravel の設定を見ると、シンボルにエイリアスが設定されていることがわかります。Response
実際のクラスの名前空間、およびlaravelファサードオブジェクトへのグローバルアクセスにエイリアスを使用するLaravelの一般的なパターンにより、これはファサードのように見えResponse
ます。しかし、Illuminate\Support\Facades\Response
クラス の実際の定義を見ると
Illuminate\Support\Facades
繰り返しますが、クラスが名前空間に存在することがわかりますが、クラスを拡張せずIlluminate\Support\Facades\Facade
、メソッドを実装してい ません。getFacadeAccessor
つまり、紛らわしいことに、実際にはファサードではありません。
これがなぜなのか誰か知っていますか?つまり、Facade 名前空間のこのクラスが実際の Laravel ファサードとして実装されていない理由は、説得力のあるフレームワークの理由ですか?
php - Laravel: ファサードとエイリアスの違い
良い一日!
読めば読むほど、これについて混乱します。ファサードとエイリアスの違いは何ですか?
私はこのクラスを持っています:
/app/libraries/Project/Data.php
そして、対応するファサードなので、PJD::だけを使用してアクセスできます。
いくつかのウェブページによると:
... Laravel Facade はプロキシです。それらはラップアラウンドし、コードの真の実装の基礎となる関数を呼び出します。さらに、Laravel アプリケーションのコンテキストでは、これらの Facade はエイリアスに割り当てることによってアクセスされます。このように依存性注入コンテナーを使用すると、File を呼び出すだけで Illuminate\Support\Facades\Filesystem などを参照できます。( http://ryantablada.com/post/proxies-service-locators-alias-facades-and-war )
しかし、次のようなものを追加することも発見し、テストに成功しました。
__app/config/app.php__
同じ方法でクラスにアクセスすることもできます。
それで、違いは何ですか?
ありがとう
編集 #01
/app/libraries/Project/Data.phpに Data という名前のクラスを作成しました
このクラス データ/app/libraries/Project/DataFacade.phpのファサード クラスがあります。
そして、私はそれらのためのサービスプロバイダーを持っています: /app/libraries/Project/DataServiceProvider.php
/app/config/app.phpにも追加しました:
composer.jsonにpsr-4 行を追加して、PJ 名前空間を /app/libraries/Project に誘導しました
これらすべてを行うことで、PJ\Data:: の代わりに PJD:: を使用するだけで、プロジェクトのどこからでもクラスにアクセスできます。
ただし、 /app/config/app.phpに追加するだけで気付きました
ファサードと ServiceProvider がなくても、まったく同じ結果が得られます。それで、どちらかのポイントは何ですか?
ありがとう、そして大きな投稿でごめんなさい。
php - Laravel Illuminate\Support\Facades\Input
私は Laravel を初めて使用し、いくつかのサンプル コードをチェックしています。
コントローラーでは、次のように表示されます。
「 use Illuminate\Support\Facades\Input; 」を使用する必要があるのはなぜですか?
たとえば、Input::get(); を使用することはできません。私のルートファイルで行うように?
php - Laravel:依存性注入とファサード?
私が以前に行っていたのは、コンストラクターを使用して MY MODELS のみを注入し、Laravel が提供するクラス、つまり 、 などに Facades を使用することでしSession
た。コンストラクトを介してすべてのクラス(私のクラスまたは Laravel のクラス) を注入し、それを構文で使用するか、コンストラクターを使用して独自のクラスを注入し、 Laravel が提供するものに Facades を使用する必要がありますか?Auth
Validator
$this->..
より具体的に言うと、私のコントローラーは通常次のようになります。
代わりに、コントローラーのようなメソッドを次のように構成する必要がありますか?
php - Laravel Facades で静的変数を使用する
Facade (この場合はシングルトン) があり、次を使用して登録しますServiceProvider
。
サービスプロバイダー
ファサード
今、私は自分のFacility
クラス内に静的変数を持ちたいと思っています:
ファシリティ.php
しかし、 を使用するFacility::$MODEL_NOT_FOUND
と、 が得られAccess to undeclared static property
ます。
私は何を間違っていますか?
php - 関係のLaravel名前空間は私を混乱させました
私のアプリには、イベント モデルとユーザー モデルがあります。イベント モデルのため、名前空間に配置する必要があります。次のように名前空間を作成しました。
イベント
ユーザー
User と Event の関係は単純な OneToMany です。したがって、私のEventControllerでは、 POST メソッドを使用して新しいイベント リソースを作成します。
同時にエラーが発生しました。
私が間違っていなければ、名前空間エラーだと思います。しかし、名前空間は既に正しく宣言されていると思います。しかし、私は同様の質問にアクセスして、別の方法で関係を築こうとしましたが、うまくいきました.個人的には満足していません.なぜこれが起こったのですか?
上記の関係を次のように変更します
laravel - Laravel 5パッケージの依存性注入を使用するか使用しないか
私は Laravel 5 のパッケージを開発しています。Laravel の Core クラスを使用するときにパッケージの依存性注入の恩恵を受けることにしましたが、詳細を読み、この質問も行った後 、Laravel 5 パッケージでの依存性注入のベスト アプローチ
Facades
ここで、コンテナのような静的メソッドを大量に使用して呼び出している場合、実際にオブジェクトを作成してそのメソッドを呼び出すという考えを思いつきました。FaceadeName:nameOfMethod
そのため、Facades からも利用できるクラスの laravel の依存性注入を使用して拡張することもできます。はほとんど役に立ちません。
たとえば、次のクラスがあります。
これを行う:
そして、関数で:
すでにそこにバインドされているコンテナに何かをバインドするため、ほとんど役に立ちません
myFunction
に変更するのは良い考えではありません
また、メソッド インジェクションのように見えるかもしれませんが、あまり利点はありません。したがって、Laravelではdependency injection
forを使用しない方がよいでしょう。Facades
私が正しいかどうか教えてください。間違っている場合は、正しい答えで私の意見を議論してください。