Laravel 5 のコントローラー間でコントローラーメソッドにアクセスする
Laravel 5 では、複雑なアプリケーションを構築するときに、別のコントローラーからメソッドにアクセスすることが必要になる場合があります。これを実現するためのいくつかのアプローチを次に示します。
直接呼び出し
このアプローチでは、次の構文を使用してコントローラー メソッドを直接呼び出します。
<code class="php">app('App\Http\Controllers\PrintReportController')->getPrintReport();</code>
whileこれは機能しますが、コード構成が不十分になる可能性があります。
コントローラーの拡張
もう 1 つのオプションは、PrintReportController を拡張して、SubmitPerformanceController がそのメソッドを継承できるようにすることです。ただし、このアプローチは親コントローラーから他のすべてのメソッドも継承するため、理想的ではない可能性があります。
トレイトの利用
推奨される解決策には、アプリでトレイトを作成することが含まれます。 /Traits ディレクトリ。トレイトは、継承せずに複数のコントローラー間で共通の機能を共有する方法を提供します。次に例を示します。
PrintReport Trait
<code class="php">trait PrintReport { public function getPrintReport() { // Implement the logic for generating the report } }</code>
Applying Traits to Controllers
use PrintReport ステートメントをトレイトにアクセスする必要があるコントローラ:
<code class="php">class PrintReportController extends Controller { use PrintReport; } class SubmitPerformanceController extends Controller { use PrintReport; }</code>
トレイトを使用すると、どちらのコントローラも $this->getPrintReport() を通じて getPrintReport メソッドを直接利用できます。あるいは、このメソッドを直接アクセスのルートとしてマップすることもできます。
特性を利用すると、Laravel アプリケーション開発におけるコードの再利用、編成、柔軟性が促進されます。
以上がLaravel 5で複数のコントローラー間でコントローラーメソッドにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。