在Laravel 中使用多個控制器時,可能存在需要從一個控制器存取另一個控制器中的方法的情況。這可以透過各種技術來實現,如下所述。
此方法涉及使用應用程式外觀直接存取控制器方法:
<code class="php">app('App\Http\Controllers\PrintReportController')->getPrintReport();</code>
而這是可行的,但不建議用於程式碼組織目的。
另一個選項是繼承包含所需方法的控制器。例如,如果 SubmitPerformanceController 需要從 PrintReportController 存取 getPrintReport 方法:
<code class="php">class SubmitPerformanceController extends PrintReportController { // ... }</code>
但是,這種方法可能會導致繼承不必要的方法。
Traits 是在控制器之間共享通用功能且沒有繼承缺點的首選解決方案。以下是如何使用特徵:
建立特徵
在應用程式/特徵中定義特徵:
<code class="php">trait PrintReport { public function getPrintReport() { // ... } }</code>
包含特徵在🎜>
包含特徵在控制器中
<code class="php">class PrintReportController extends Controller { use PrintReport; } class SubmitPerformanceController extends Controller { use PrintReport; }</code>
將特徵添加到兩個控制器:
透過這種方法,兩個控制器都可以透過$this->getPrintReport() 訪問getPrintReport 方法。以上是如何在 Laravel 5 中從一個控制器存取另一個控制器中的方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!