問題タブ [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.

0 投票する
0 に答える
442 参照

php - Laravelのレスポンスファサードがファサードではないのはなぜですか?

Laravel の設定を見ると、シンボルにエイリアスが設定されていることがわかります。Response

実際のクラスの名前空間、およびlaravelファサードオブジェクトへのグローバルアクセスにエイリアスを使用するLaravelの一般的なパターンにより、これはファサードのように見えResponseます。しかし、Illuminate\Support\Facades\Responseクラス の実際の定義を見ると

Illuminate\Support\Facades繰り返しますが、クラスが名前空間に存在することがわかりますが、クラスを拡張せIlluminate\Support\Facades\Facade、メソッドを実装してい ません。getFacadeAccessorつまり、紛らわしいことに、実際にはファサードではありません。

これがなぜなのか誰か知っていますか?つまり、Facade 名前空間のこのクラスが実際の Laravel ファサードとして実装されていない理由は、説得力のあるフレームワークの理由ですか?

0 投票する
1 に答える
3408 参照

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 がなくても、まったく同じ結果が得られます。それで、どちらかのポイントは何ですか?

ありがとう、そして大きな投稿でごめんなさい。

0 投票する
2 に答える
5503 参照

php - Laravel Illuminate\Support\Facades\Input

私は Laravel を初めて使用し、いくつかのサンプル コードをチェックしています。

コントローラーでは、次のように表示されます。

「 use Illuminate\Support\Facades\Input; 」を使用する必要があるのはなぜですか?

たとえば、Input::get(); を使用することはできません。私のルートファイルで行うように?

0 投票する
4 に答える
2567 参照

php - Laravel:依存性注入とファサード?

私が以前に行っていたのは、コンストラクターを使用して MY MODELS のみを注入し、Laravel が提供するクラス、つまり 、 などに Facades を使用することでしSessionた。コンストラクトを介してすべてのクラス(私のクラスまたは Laravel のクラス) を注入し、それを構文で使用するか、コンストラクターを使用して独自のクラスを注入し、 Laravel が提供するものに Facades を使用する必要がありますか?AuthValidator$this->..

より具体的に言うと、私のコントローラーは通常次のようになります。

代わりに、コントローラーのようなメソッドを次のように構成する必要がありますか?

0 投票する
1 に答える
10381 参照

php - Laravel Facades で静的変数を使用する

Facade (この場合はシングルトン) があり、次を使用して登録しますServiceProvider

サービスプロバイダー

ファサード

今、私は自分のFacilityクラス内に静的変数を持ちたいと思っています:

ファシリティ.php

しかし、 を使用するFacility::$MODEL_NOT_FOUNDと、 が得られAccess to undeclared static propertyます。

私は何を間違っていますか?

0 投票する
1 に答える
450 参照

php - 関係のLaravel名前空間は私を混乱させました

私のアプリには、イベント モデルとユーザー モデルがあります。イベント モデルのため、名前空間に配置する必要があります。次のように名前空間を作成しました。

イベント

ユーザー

User と Event の関係は単純な OneToMany です。したがって、私のEventControllerでは、 POST メソッドを使用して新しいイベント リソースを作成します。

同時にエラーが発生しました。

私が間違っていなければ、名前空間エラーだと思います。しかし、名前空間は既に正しく宣言されていると思います。しかし、私は同様の質問にアクセスして、別の方法で関係を築こうとしましたが、うまくいきました.個人的には満足していません.なぜこれが起こったのですか?
上記の関係を次のように変更します

0 投票する
1 に答える
905 参照

laravel - Laravel 5パッケージの依存性注入を使用するか使用しないか

私は Laravel 5 のパッケージを開発しています。Laravel の Core クラスを使用するときにパッケージの依存性注入の恩恵を受けることにしましたが、詳細を読み、この質問も行った後 、Laravel 5 パッケージでの依存性注入のベスト アプローチ

Facadesここで、コンテナのような静的メソッドを大量に使用して呼び出している場合、実際にオブジェクトを作成してそのメソッドを呼び出すという考えを思いつきました。FaceadeName:nameOfMethodそのため、Facades からも利用できるクラスの laravel の依存性注入を使用して拡張することもできます。はほとんど役に立ちません。

たとえば、次のクラスがあります。

これを行う:

そして、関数で:

すでにそこにバインドされているコンテナに何かをバインドするため、ほとんど役に立ちません

myFunctionに変更するのは良い考えではありません

また、メソッド インジェクションのように見えるかもしれませんが、あまり利点はありません。したがって、Laravelではdependency injectionforを使用しない方がよいでしょう。Facades私が正しいかどうか教えてください。間違っている場合は、正しい答えで私の意見を議論してください。