問題タブ [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 ファサードの依存関係はありますか?
1 つのクラスにあまり多くの依存関係があってはならないことを読みました。ある本では、4 つの依存関係は、クラスがやりすぎている可能性があることを示している可能性があると述べています。
10 個の依存関係 (6 つのクラスと 4 つのファサード) を使用するクラスを作成したとします。これらの 6 つのクラスのみを考慮して分割する必要がありますか、それとも 4 つのファサードも考慮する必要がありますか?
誰かが私がどのようにして多くのファサードを取得したか知りたい場合:
これらはすべて頻繁に必要になります。質問を聞きました - なぜアプリが必要なのですか? 関数を呼び出すには:
ここでも、ファサードは依存関係ではないと言う人もいます:
この問題についてはさまざまな見方がありますが (クラスが何かに依存する場合)、クラスの依存関係は通常、コンストラクターに渡されるもの、つまりクラスをオブジェクトとしてインスタンス化するために必要なものと見なされます。
クラスからファサードを自分で作成できると思います。この方法で依存関係を減らします。しかし、これはあまり意味がありませんか?
たとえば、この記事では、ファサードを使用すべきではないと述べています。
http://taylorotwell.com/response-dont-use-facades/
それから、ファサードがそれほど悪くないことは理解できますが、悪いことは、クラスがあまりにも多くのことをやり始めることです。
私はLaravel 4について話していますが、おそらく同じことがLaravel 5または同じものを使用する他のフレームワークにも当てはまります。Laravel 5 は Laravel 4 ほど多くのファサードを使用していないと聞きました。
アップデート:
また、このトピックについて話し合うときに他の人と使用できるように、そのような議論をしたいと思います. 私が言うように-インターネットの何人かの人(良いスタックオーバーフロープロファイルを持っていても)は、ファサードは悪い、それらはグローバル変数のようなものであると私に言いました、彼らはすぐにわかります-これはグローバルと同じではありません、それらはモック可能です、あなたはすべきではありませんお手入れ。また、彼らは言うかもしれません、これはその人の意見です。だから自分を守るためにストロングポイントが欲しい。だから私はそれを 2*2 = 4 のように説明でき、誰も反対することはできませんでした。または少なくともそれに近い。
アップデート:
それらが依存関係であり、1 つのクラスに対して最大約 4 つの依存関係が必要な場合、グループ化されたクラスを作成するというアイデアは 1 つだけです。クラス ツリーのようになります。しかし、私は小さな機能のために多くのクラスになってしまいます。この 10 個の依存関係のように、最大 4 個の依存関係が必要な場合、1 つではなく 3 ~ 5 個のクラスが必要になると思います。したがって、大きなプロジェクトがある場合は、数百万の小さなクラスが必要になります。もっと複雑に見えませんか?Laravel のように多くのクラスがあるのに対し、CodeIgniter にはクラスがはるかに少なく、読みやすく、フォローしやすく、拡張しやすいように見えます。
php - Laravel 5イメージクラスの競合
私は画像モデルを持っていますが、介入画像を使用して画像のサイズを変更し始めた後、両方のクラス名が Image であるため、クラス競合の問題が発生しました。
app.php のエイリアスを変更して、介入ファサード名が image ではなく imageIntervention になるようにしました。
しかし、imageController でこのファサードを使用するにはどうすればよいでしょうか?
ありがとう - アンドレアス
php - スタンドアローン Illuminate IoC Container の Illuminate/Support/Facade/App ファサードを作成する方法
私のスタンドアロン (Laravel なし) プロジェクトでは、Illuminate IoC コンテナーを使用したいと考えています。また、コンポーネントApp
によって提供されるファサードを介してアプリ コンテナーにアクセスしたいと考えています。illuminate/support
両方のコンポーネント (v5.0.28) をインストールしました。これが私の(簡略化された)コードです:
残念ながら、何かをバインドしようとすると、次の結果になります。
これがその行のコードです
、、および$instance
のインスタンスはどこにありますか。問題は、が のインスタンスではなく、クラスが静的プロパティで任意の関数を呼び出すことをサポートしていないことです。Illuminate\Support\Facades\App
$method == 'bind'
$args[0] == 'w'
$args[1] == 'Widget'
$instance
Illuminate\Container\Container
Illuminate\Support\Facades\App
$app
それを機能させるために、次の関数をに追加しましたIlluminate\Support\Facades\App
:
しかし、確かに外部コンポーネントを編集することは正しいことではありません!!! 確かに誰かがこれに遭遇したことがあります!
質問は次のとおりです。これを行う適切な方法は何ですか?
php - Laravel - PHP-Vars-To-Js-Transformer パッケージを機能させることができません
私は Laravel 5 を初めて使用し、 PHP-Vars-To-Js-Transformer をセットアップしようとしていました 。問題は、コントローラーでJavaScriptファサードを使用できないことです。このクラスが見つかりません。
私のコントローラー:
私の // app/config/app.php
コマンドphp artisan vendor:publish
とcomposer install
. 何か特別なものが欠けているかどうかはわかりません..ありがとう
laravel-5 - Laravel5、Event::listen()を別ファイルに配置したいのですが、Eventファサードが不明でした
一連のEvent::listen()
s を別のファイルに入れたいのですが、これがこれまでに行ったことです。
ブートストラップ/autoload.php
ブートストラップ/listeners.php
エラーはクラスイベントが見つかりません
私の要件の正しい方法は何ですか? 新しい .php ファイルを作成し、bootstrap/autoload.phpからそれを要求することが、この要件の正しい方法であるかどうかはわかりません。
助けてください。ありがとう
php - Laravel5ファサードが解決されていません
にサービス プロバイダを登録しましたconfig/app.php
。ロードして実行しています。
サービス プロバイダーの register() メソッドで:
次に、このようなファサードを作成しました
次に、ファサードの実装を追加しました
最後に、エイリアスを追加しましたconfig/app.php
私がする時
私は次のことを得る
どうしたの?
編集
Foo\Facades\Timer
正常に読み込まれています。
また、Foo\Utils\Timer
私はできるので解決されています
エラーなし。
php - laravel-ide-helper の問題
Laravel 5 Fundamentals Laracasts ビデオ セットを使用していますが、IDE (Phpstorm 8) の Facades で問題が発生しています。Eloquent ファサードを使用するモデルがありますuse Illuminate\Database\Eloquent\Model;
laravel-ide-helper を必要としcomposer require barryvdh/laravel-ide-helper
、サービス プロバイダーを providers 配列に追加し'Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider',
、ドキュメントを再生成して IDE を再起動しましたが、成功しませんでした。
コントローラーにモデル宣言があります$article = Article::findOrFail($id);
が、findOrFail
メソッドが強調表示され、クラス App\Article に見つからないメソッド 'findOrFail' としてフラグが付けられます。
私は Laravel と Facades の概念に不慣れですが、道に迷っており、私の問題に対する既存の答えを見つけることができませんでした。