首頁  >  文章  >  後端開發  >  如何在 Laravel 5 中從一個控制器存取另一個控制器中的方法?

如何在 Laravel 5 中從一個控制器存取另一個控制器中的方法?

Barbara Streisand
Barbara Streisand原創
2024-10-30 02:59:29645瀏覽

How Can I Access Methods from One Controller in Another Controller in Laravel 5?

在Laravel 5 中跨控制器存取控制器方法

在Laravel 中使用多個控制器時,可能存在需要從一個控制器存取另一個控制器中的方法的情況。這可以透過各種技術來實現,如下所述。

使用應用程式外觀

此方法涉及使用應用程式外觀直接存取控制器方法:

<code class="php">app('App\Http\Controllers\PrintReportController')->getPrintReport();</code>

而這是可行的,但不建議用於程式碼組織目的。

繼承

另一個選項是繼承包含所需方法的控制器。例如,如果 SubmitPerformanceController 需要從 PrintReportController 存取 getPrintReport 方法:

<code class="php">class SubmitPerformanceController extends PrintReportController {
    // ...
}</code>

但是,這種方法可能會導致繼承不必要的方法。

Traits

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 方法。
  • 其他提示
  • 考慮您正在存取的控制器的命名空間。
  • 如果路由在routes.php中映射,則可以直接呼叫控制器方法。
有關特徵的更多見解,請參閱官方文件。

以上是如何在 Laravel 5 中從一個控制器存取另一個控制器中的方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn