在Laravel 5 中跨控制器存取控制器方法
在Laravel 5 中,建立複雜應用程式時可能需要從另一個複雜應用程式時可能需要從另一個控制器存取方法。以下是實現此目的的幾種方法:
直接呼叫
此方法使用以下語法直接呼叫控制器方法:
<code class="php">app('App\Http\Controllers\PrintReportController')->getPrintReport();</code>
而這有效,但可能會導致程式碼組織不良。
擴充控制器
另一個選項是擴充 PrintReportController,讓 SubmitPerformanceController 繼承其方法。然而,這種方法也繼承了父控制器的所有其他方法,這可能並不理想。
利用 Traits
建議的解決方案包括在應用程式中建立一個 Trait /特徵目錄。特徵提供了一種在多個控制器之間共享通用功能而無需繼承的方法。以下是範例:
PrintReport Trait
<code class="php">trait PrintReport { public function getPrintReport() { // Implement the logic for generating the report } }</code>
將Traits 套用到控制器
將Traits 套用到控制器
<code class="php">class PrintReportController extends Controller { use PrintReport; } class SubmitPerformanceController extends Controller { use PrintReport; }</code>
將Traits 套用到控制器
以上是如何在 Laravel 5 中跨控制器存取控制器方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!