Apabila bekerja dengan berbilang pengawal dalam Laravel, mungkin terdapat senario di mana anda perlu mengakses kaedah daripada satu pengawal dalam yang lain . Ini boleh dicapai melalui pelbagai teknik, seperti yang digariskan di bawah.
Pendekatan ini melibatkan akses kepada kaedah pengawal secara terus menggunakan fasad Apl:
<code class="php">app('App\Http\Controllers\PrintReportController')->getPrintReport();</code>
Sementara ini berfungsi, ia tidak disyorkan untuk tujuan organisasi kod.
Pilihan lain ialah mewarisi pengawal yang mengandungi kaedah yang diingini. Contohnya, jika SubmitPerformanceController perlu mengakses kaedah getPrintReport daripada PrintReportController:
<code class="php">class SubmitPerformanceController extends PrintReportController { // ... }</code>
Walau bagaimanapun, pendekatan ini boleh membawa kepada pewarisan kaedah yang tidak perlu.
Sifat ialah penyelesaian pilihan untuk berkongsi fungsi biasa antara pengawal tanpa kelemahan warisan. Begini cara menggunakan ciri:
Buat Sifat
Tentukan sifat dalam apl/Sifat:
<code class="php">trait PrintReport { public function getPrintReport() { // ... } }</code>
Sertakan Sifat dalam Pengawal
Tambahkan sifat pada kedua-dua pengawal:
<code class="php">class PrintReportController extends Controller { use PrintReport; } class SubmitPerformanceController extends Controller { use PrintReport; }</code>
Dengan pendekatan ini, kedua-dua pengawal boleh mengakses kaedah getPrintReport melalui $this->getPrintReport().
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengakses Kaedah daripada Satu Pengawal dalam Pengawal Lain dalam Laravel 5?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!