問題:
Laravel には、SubmitPerformanceController と PrintReportController という 2 つのコントローラーがあります。 SubmitPerformanceController 内の PrintReportController から getPrintReport メソッドを呼び出したいとします。どうすればこれを実現できますか?
答え:
Laravel 5 では、複数のコントローラー間でコントローラー メソッドにアクセスするには、いくつかの方法があります:
メソッド1: app() ヘルパーを使用する
<code class="php">app('App\Http\Controllers\PrintReportController')->getPrintReport();</code>
このアプローチでは、PrintReportController クラスのインスタンスを取得し、その getPrintReport メソッドを直接実行します。機能しますが、組織上の懸念からお勧めできません。
方法 2: 継承
<code class="php">class SubmitPerformanceController extends PrintReportController { // ... }</code>
PrintReportController を拡張することにより、SubmitPerformanceController は getPrintReport を含むすべてのメソッドを継承します。ただし、このアプローチは、必要ではない可能性がある他のすべてのメソッドも継承します。
メソッド 3: トレイト
トレイト (例: app/Traits) の作成が考慮されます。 the最佳做法:`
<code class="php">trait PrintReport { public function getPrintReport() { // ... } } class PrintReportController extends Controller { use PrintReport; } class SubmitPerformanceController extends Controller { use PrintReport; }</code>
トレイトを使用することにより、SubmitPerformanceController はコントローラー メソッドとして getPrintReport メソッドにアクセスできます (例: $this->getPrintReport())。 SubmitPerformanceController と PrintReportController は両方とも、この方法で getPrintReport にアクセスできます。
以上がLaravel 5 でコントローラーメソッドにアクセスする方法: メソッドとベストプラクティスのガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。