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!