問題タブ [laravel-ioc]
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.
laravel - リポジトリへのインジェクション
私は自分の問題について多くの質問を見つけ、すべての解決策を試しました (と思います) が、うまくいきません。おそらく、非常に簡単なものを見落としています。
Laravel 5 を使用しています。リポジトリ パターンを実装しようとしています。Eloquent モデル '\Notos\Kind' があります。
それから私はこのインターフェースを持っています:
私のリポジトリは次のようになります。
私のサービスプロバイダー:
そして、リポジトリを使用する私のコントローラー:
このプロバイダは config/app.php に登録されています
KindController@find を実行しようとすると、次のエラーが発生します。
私が間違っていることを見つけることができません。__construct(Model $kind) を __construct(Kind $kind) に変更すると完璧に動作します。
何か案は?ありがとう
php - Laravel 5 - インターフェイスはインスタンス化できません
この質問が何度も聞かれたことは知っていますが、どの回答も役に立ちませんでした。
Laravel 5で例外が発生しています
私が成功せずにやったこと:
- プロバイダーに登録
App\Providers\AppRepositoryProvider
するapp.php
php artisan clear-compiled
- MyService のリポジトリのインターフェイスを置き換えればすべてうまくいきますが、それは間違っていると感じています (IoC コンテナーで処理する必要がありますか?)。
構造:
App\Contracts\CustomModelInterface.php
アプリ\リポジトリ\CustomModelRepository.php
App\Services\MyService.php (コントローラーとリポジトリーの間にビジネス ロジック / レイヤーを保持)
App\Providers\AppRepositoryProvider.php
私のコントローラーは次のようになります。
composer.json
php - ログ インターフェイス コンテナ バインディング ルーメン 5.0 のオーバーライド
「storage/logs/lumen.log」から「php://stderr」に、ルーメンがログを書き込む場所をオーバーライドしようとしています。次のコードは私が現在試しているもので、期待どおりに動作しません。
エラーは発生せず、ログは引き続きデフォルトの場所 (storage/logs フォルダー) に書き込まれます。
そして私がするとき:
デフォルトの実装を取得します。
ドキュメントを誤解しましたか、それとも間違った方法でアプローチしていますか?
laravel - Laravel IoC がインターフェースを自動的に解決しない
私はちょうどこの例を越えましたが、バインディング インターフェイスを実装に解決できません。
次のコード ファイルを用意します。
バインディングはで行われますapp/Providers/AppServiceProvider.php
MakeSomeNoise
ジョブはコントローラからディスパッチされます
(*) で、Laravel がバインディングを自動的に解決することを期待していますが、そうではありません。ここでエラー、
しかし、コントローラーのコンストラクターに注入するだけで問題なく動作します。
これについて何か考えはありますか?