Rumah  >  Artikel  >  pembangunan bahagian belakang  >  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-11-02 18:08:29664semak imbas

How to Access Controller Methods from Another Controller in Laravel 5?

Kaedah Pengawal Akses daripada Pengawal Lain dalam Laravel 5

Apabila bekerja dengan berbilang pengawal dalam Laravel, mungkin perlu mengakses kaedah daripada satu pengawal dalam yang lain. Ini boleh dicapai melalui pelbagai pendekatan, masing-masing mempunyai kelebihan dan keburukan tersendiri.

Akses Terus

Satu kaedah ialah akses terus, yang melibatkan penghantaran nama pengawal dan kaedah yang anda ingin panggil sebagai hujah kepada fungsi app(). Sebagai contoh, dalam SubmitPerformanceController, anda boleh mengakses kaedah getPrintReport() PrintReportController seperti berikut:

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

Walaupun pendekatan ini berfungsi, ia tidak dianggap sebagai amalan terbaik dan boleh membawa kepada isu organisasi kod.

Warisan

Pilihan lain ialah mewarisi PrintReportController dalam SubmitPerformanceController, membolehkan anda mengakses kaedah getPrintReport() secara terus. Walau bagaimanapun, pendekatan ini juga mewarisi semua kaedah lain daripada pengawal induk, yang mungkin tidak diingini.

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

Ciri

Penyelesaian yang lebih elegan melibatkan penggunaan ciri. Buat sifat yang mengandungi kaedah yang diingini (cth., app/Traits/PrintReport.php) dan laksanakan logik di sana. Selepas itu, masukkan sifat dalam SubmitPerformanceController dan PrintReportController menggunakan kata kunci penggunaan.

<code class="php">trait PrintReport {
    public function getPrintReport() {
        // Logic here
    }
}

class PrintReportController extends Controller {
    use PrintReport;
}

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

Dengan memanfaatkan ciri, kedua-dua pengawal boleh mengakses kaedah getPrintReport() menggunakan $this->getPrintReport(). Pendekatan ini menggalakkan kebolehgunaan semula kod dan organisasi yang lebih baik.

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