Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk Mengakses Kaedah Pengawal daripada Pengawal Lain dalam Laravel 5?

Bagaimana untuk Mengakses Kaedah Pengawal daripada Pengawal Lain dalam Laravel 5?

Susan Sarandon
Susan Sarandonasal
2024-10-31 08:00:30620semak imbas

How to Access a Controller Method from Another Controller in Laravel 5?

Cara Mengakses Kaedah Pengawal daripada Pengawal Lain dalam Laravel 5

Apabila bekerja dengan berbilang pengawal dalam Laravel, anda mungkin perlu mengakses kaedah dari satu pengawal dalam yang lain. Berikut ialah pelbagai pendekatan untuk mencapai matlamat ini:

Menggunakan Kaedah App::call()

Anda boleh mengakses kaedah menggunakan fungsi pembantu app():

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

Walau bagaimanapun, pendekatan ini tidak disyorkan kerana kebimbangan organisasi.

Melanjutkan Pengawal

Anda boleh mewarisi kaedah dengan melanjutkan pengawal yang lain:

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

Ini akan mewarisi semua kaedah daripada PrintReportController, yang mungkin tidak diingini.

Menggunakan Sifat

Pendekatan pilihan adalah untuk mencipta trait dengan logik yang diingini:

<code class="php">trait PrintReport {

    public function getPrintReport() {
        // .....
    }
}</code>

Kemudian, masukkan trait dalam pengawal yang berkaitan:

<code class="php">class PrintReportController extends Controller {
     use PrintReport;
}

class SubmitPerformanceController extends Controller {
     use PrintReport;
}</code>

Ini membolehkan kedua-dua pengawal mengakses kaedah getPrintReport() melalui $this-> ;getPrintReport().

Atas ialah kandungan terperinci Bagaimana untuk Mengakses Kaedah Pengawal daripada Pengawal Lain dalam Laravel 5?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn