Rumah >pembangunan bahagian belakang >tutorial php >Amalan, Petua dan Trik Terbaik Laravel untuk 5
Menjelang tahun 2025, Laravel terus menjadi pilihan utama untuk pembangunan web, menawarkan pembangun alat untuk mencipta aplikasi yang berkuasa dan cekap. Artikel ini menggariskan amalan terbaik, petua dan helah utama yang boleh meningkatkan kualiti kod anda dan memperkemas aliran kerja anda, sama ada anda menggunakan Laravel 9, 10 atau 11. Cerapan ini akan membantu anda memanfaatkan Laravel sepenuhnya dan meningkatkan kemahiran pembangunan anda , tidak kira sama ada anda seorang pemula atau pembangun berpengalaman.
Mengekalkan kemas kini Laravel mempunyai beberapa faedah utama:
Menjalankan kemas kini komposer secara kerap adalah penting untuk memastikan pakej anda dikemas kini. Amalan mudah ini ialah salah satu cara terbaik untuk memastikan pakej anda dikemas kini dengan ciri terkini dan tampung keselamatan.
Jika anda teragak-agak tentang kemas kini, ini mungkin menunjukkan bahawa kod anda tidak diuji dengan secukupnya. Dengan mengamalkan amalan ujian, anda boleh memastikan kemas kini utama tidak melanggar kod anda, membolehkan anda memanfaatkan sepenuhnya peningkatan Laravel.
Jika anda memilih untuk tidak mengemas kini secara manual, pertimbangkan untuk menggunakan ServBay, alat pengurusan persekitaran yang telah menyepadukan versi beta PHP 8.4, menjadikannya lebih mudah untuk memastikan Laravel dan pelbagai pakej dikemas kini.
Pengujian automatik adalah bidang yang luas namun sering dipandang remeh. Walau bagaimanapun, ia adalah salah satu amalan terbaik yang paling penting untuk memastikan kebolehpercayaan projek.
Faedah utama mengekalkan suite ujian yang mantap termasuk:
Apabila mengubah suai kod, cuma jalankan ujian artisan php untuk mengenal pasti sebarang fungsi yang rosak, selesaikan isu dan ulangi proses!
Ujian automatik boleh meningkatkan kestabilan projek dengan ketara, sekali gus meningkatkan kerjaya anda.
Untuk membantu anda bermula, Laracasts menawarkan kursus ujian percuma. Anda boleh belajar tentang PHPUnit (standard industri) dan Pest (rangka kerja ujian moden yang memudahkan ujian PHP). Kursus "Perosak Daripada Calar" amat disyorkan.
Pernahkah anda memikirkan mengapa anda perlu menggunakan rangka kerja seperti Laravel?
Kerangka menyediakan pendekatan berstruktur untuk pembangunan, memastikan semua ahli pasukan kekal konsisten dan berusaha ke arah matlamat yang sama. Ia datang dengan ciri yang kaya, kompleks dan diuji pertempuran, membolehkan anda menumpukan pada aspek unik projek anda tanpa terperangkap dengan butiran.
Jadi, adakah mengikut struktur projek lalai Laravel dianggap sebagai amalan terbaik? Sudah tentu! Inilah sebabnya:
Permintaan borang tersuai dalam Laravel ialah alat berkuasa untuk mengendalikan pengesahan, memberikan beberapa kelebihan utama:
Membuat permintaan borang tersuai adalah mudah. Jalankan sahaja arahan Artisan berikut:
php artisan make:request StorePostRequest
Kemudian, dalam pengawal anda, anda hanya boleh menaip-membawa permintaan:
use App\Http\Requests\StorePostRequest; class PostController { public function store(StorePostRequest $request) { $validated = $request->validated(); Post::create($validated); // Other logic... } }
Permintaan borang tersuai juga boleh memasukkan logik tambahan di luar pengesahan. Sebagai contoh, anda boleh menormalkan data input sebelum ia mencapai pengawal dengan mengatasi kaedah prepareForValidation:
public function prepareForValidation() { $this->merge([ 'slug' => Str::slug($this->title), ]); }
Dalam contoh ini, kaedah menjana slug secara automatik daripada tajuk sebelum proses pengesahan berlaku.
Permintaan borang tersuai juga boleh mengendalikan logik kebenaran. Jika anda mendapati penggunaan dasar menyusahkan, anda boleh menyertakan semakan kebenaran ringkas secara terus dalam permintaan borang.
Walaupun mengikut amalan terbaik, pengawal boleh menjadi sukar digunakan. Penyelesaian yang hebat ialah menggunakan pengawal tindakan tunggal dalam Laravel. Pengawal ini direka bentuk untuk mengendalikan satu tindakan, bukannya berbilang tindakan seperti pengawal sumber standard.
Untuk mencipta pengawal tindakan tunggal, gunakan perintah Artisan berikut:
php artisan make:request StorePostRequest
Arahan ini mencipta pengawal dengan hanya satu tindakan, bernama __invoke. Untuk mendapatkan maklumat lanjut tentang kaedah sihir __invoke, rujuk dokumentasi Laravel.
Dengan pengawal tindakan tunggal, anda boleh memudahkan definisi laluan. Inilah cara untuk menggunakannya dalam laluan anda:
use App\Http\Requests\StorePostRequest; class PostController { public function store(StorePostRequest $request) { $validated = $request->validated(); Post::create($validated); // Other logic... } }
Menggunakan pengawal tindakan tunggal ialah amalan terbaik subjektif. Terpulang kepada anda dan pasukan anda untuk menentukan sama ada pendekatan ini sesuai dengan struktur projek dan keutamaan kebolehbacaan.
Dalam Laravel, middleware ialah alat berkuasa yang membolehkan anda menapis atau mengubah suai permintaan masuk. Dengan memanfaatkan perisian tengah, anda boleh mengelakkan pertindihan kod dan memastikan pengawal bersih dan terurus. Berikut ialah beberapa kes penggunaan middleware biasa:
Laravel menyediakan pelbagai perisian tengah terbina dalam untuk tugas biasa, seperti pengesahan dan pengehadan kadar.
Untuk mencipta perisian tengah tersuai, gunakan perintah Artisan berikut:
public function prepareForValidation() { $this->merge([ 'slug' => Str::slug($this->title), ]); }
Dalam perisian tengah anda, anda boleh menentukan logik untuk mengendalikan permintaan. Berikut ialah contoh perisian tengah yang menyemak sama ada pengguna mempunyai cukup token:
php artisan make:controller ShowPostController --invokable
Setelah anda menentukan perisian tengah anda, anda boleh melampirkannya pada sebarang bilangan laluan. Pendekatan modular ini membantu memastikan kod anda bersih dan mengurangkan pertindihan dalam pengawal.
use App\Http\Controllers\ShowPostController; // Single action controller route Route::get('/posts/{post}', ShowPostController::class);
Menggunakan dasar untuk kebenaran dalam Laravel adalah penting untuk membina aplikasi yang jelas dan boleh diselenggara. Tiga faedah utama menggunakan polisi ialah:
Mari kita lihat senario praktikal menggunakan dasar untuk kemas kini siaran:
php artisan make:request StorePostRequest
Migrasi ialah satu cara untuk mentakrifkan skema pangkalan data menggunakan kod PHP tulen. Anda boleh menganggapnya sebagai alternatif kod kepada phpMyAdmin, menyediakan cara terprogram untuk mengurus struktur pangkalan data anda. Pendekatan ini amat berfaedah untuk pasukan, kerana ia membolehkan semua orang meniru persekitaran pembangunan yang sama pada mesin tempatan mereka dan mengekalkan sejarah perubahan yang jelas dalam Git.
Migrasi juga memudahkan penggunaan projek ke persekitaran baharu (seperti pementasan atau pengeluaran) tanpa perlu mengeksport pangkalan data daripada persekitaran lain. Walau bagaimanapun, perangkap biasa ialah sesetengah pembangun membuat perubahan terus kepada pangkalan data dan bukannya mencipta migrasi baharu. Amalan ini boleh menyusahkan ahli pasukan lain, yang mungkin perlu meminta pembuangan pangkalan data melalui Slack. Untuk meningkatkan projek dan mengekalkan konsistensi, adalah penting untuk menggunakan migrasi dengan berkesan.
Penghijrahan tanpa nama ialah penyelesaian yang berkesan untuk mengelakkan konflik nama kelas. Dengan ciri ini, anda boleh membuat berbilang migrasi bernama "update_posts_table" tanpa menghadapi ralat, mengurangkan geseran semasa proses pembangunan.
Dalam Laravel 9 dan ke atas, apabila anda menjalankan perintah berikut, migrasi tanpa nama dijana secara automatik:
use App\Http\Requests\StorePostRequest; class PostController { public function store(StorePostRequest $request) { $validated = $request->validated(); Post::create($validated); // Other logic... } }
Struktur migrasi ini kelihatan seperti ini:
public function prepareForValidation() { $this->merge([ 'slug' => Str::slug($this->title), ]); }
Menariknya, anda juga boleh melaksanakan migrasi tanpa nama dalam Laravel 8. Untuk melakukan ini, cuma gantikan nama kelas dengan kembalikan kelas baharu dan pastikan anda memasukkan koma bertitik pada penghujungnya. Dengan cara ini, anda boleh menikmati faedah migrasi tanpa nama walaupun dalam versi terdahulu.
Kaedah down() digunakan oleh perintah php artisan migrate:rollback untuk membalikkan perubahan yang dibuat pada pangkalan data. Apabila sesetengah pembangun memilih untuk melaksanakannya manakala yang lain tidak, adalah penting untuk memastikan bahawa jika anda menggunakannya, kaedah down() anda ditakrifkan dengan betul.
Pada asasnya, kaedah bawah() harus membalikkan operasi yang dilakukan dalam kaedah atas(). Berikut ialah contoh asas:
php artisan make:request StorePostRequest
Jika anda memilih untuk tidak menggunakan kaedah down(), anda boleh memadamkannya.
Mematuhi konvensyen penamaan jadual Laravel ialah amalan terbaik mudah yang boleh memberi manfaat besar kepada pasukan anda. Apabila anda menggunakan perintah Artisan, rangka kerja mengendalikan konvensyen ini secara automatik, seperti php artisan make:model Post --migration --factory.
Jika, atas sebab tertentu, anda tidak boleh menggunakan arahan ini, berikut ialah panduan ringkas:
Untuk model bernama Post, jadual yang sepadan hendaklah dinamakan jawatan, menggunakan bentuk jamak. Contohnya:
Untuk jadual pangsi yang menyambungkan Siaran dan Ulasan (cth., siaran_komen):
Untuk butiran lanjut, rujuk dokumentasi rasmi.
Terdapat lebih banyak amalan terbaik untuk dilindungi! Adakah anda mengalami masalah N 1? Pemuatan yang bersemangat adalah cara yang berkesan untuk menghalangnya.
Sebagai contoh, jika anda memaparkan senarai 30 siaran dan pengarangnya, kerana malas memuatkan, Eloquent akan melaksanakan satu pertanyaan untuk 30 siaran dan kemudian 30 pertanyaan tambahan untuk setiap pengarang (yang bermaksud setiap kali anda memanggil $post ->pengguna dalam kod anda, ia mendapatkan semula perhubungan pengguna).
Penyelesaiannya mudah: gunakan kaedah with() untuk mengurangkan bilangan pertanyaan daripada 31 kepada 2.
use App\Http\Requests\StorePostRequest; class PostController { public function store(StorePostRequest $request) { $validated = $request->validated(); Post::create($validated); // Other logic... } }
Untuk mengelakkan masalah N 1, anda boleh mengkonfigurasi aplikasi untuk membuang pengecualian apabila perhubungan dimuatkan dengan malas. Sekatan ini hanya perlu dikuatkuasakan dalam persekitaran setempat.
public function prepareForValidation() { $this->merge([ 'slug' => Str::slug($this->title), ]); }
Mod ketat Eloquent ialah alat penyahpepijatan yang berharga. Ia membantu pembangun mengenal pasti isu yang berpotensi semasa pembangunan dengan membuang pengecualian dalam pelbagai senario:
Untuk mendayakan mod ketat, tambahkan kod berikut pada kaedah but() AppServiceProvider.php:
php artisan make:request StorePostRequest
Laravel 9 memperkenalkan cara baharu untuk mengisytiharkan pengakses dan mutator. Begini cara untuk melaksanakannya sekarang:
use App\Http\Requests\StorePostRequest; class PostController { public function store(StorePostRequest $request) { $validated = $request->validated(); Post::create($validated); // Other logic... } }
Sintaks baharu ini membolehkan anda mentakrifkan pengakses dan mutator dengan cara yang lebih ringkas. Anda juga boleh cache nilai yang mahal dari segi pengiraan:
public function prepareForValidation() { $this->merge([ 'slug' => Str::slug($this->title), ]); }
Sebaliknya, kaedah sebelumnya kelihatan seperti ini:
php artisan make:controller ShowPostController --invokable
Bertukar kepada sintaks baharu memudahkan kod dan meningkatkan kebolehbacaan.
Apabila berurusan dengan tugasan yang memakan masa (seperti menghantar e-mel selepas menyerahkan borang hubungan), anda boleh meningkatkan pengalaman pengguna dengan melengahkan tugas sehingga selepas pelayan membalas kepada pengguna. Di sinilah dispatchAfterResponse() berperanan, membolehkan anda menangguhkan proses yang berjalan lama:
use App\Http\Controllers\ShowPostController; // Single action controller route Route::get('/posts/{post}', ShowPostController::class);
Sebagai alternatif, jika anda lebih suka menjadualkan tugas menggunakan fungsi tanpa nama, anda boleh melakukannya seperti ini:
php artisan make:middleware CheckTokens
Dengan menggunakan dispatchAfterResponse(), anda memastikan pengguna menerima respons yang lebih pantas daripada pelayan manakala tugasan latar belakang tidak menjejaskan pengalaman pengguna.
Apabila memproses tugasan intensif pengiraan (seperti mengendalikan imej yang dimuat naik pengguna), melaksanakan operasi ini dengan segera boleh membebankan pelayan dan membawa kepada pengalaman pengguna yang buruk. Inilah cara untuk menanganinya:
Sistem baris gilir Laravel membolehkan anda menangguhkan tugasan yang telah lama dijalankan ini untuk dijalankan secara selari yang teratur atau terkawal, memastikan pelayan kekal responsif dan pengguna tidak perlu menunggu.
Untuk memudahkan pengurusan tugas, pertimbangkan untuk menggunakan Laravel Horizon, yang menyediakan antara muka pengguna untuk memantau dan mengawal tugas baris gilir dengan cekap. Dengan cara ini, anda boleh mengendalikan proses yang kompleks di latar belakang sambil mengekalkan prestasi lancar.
Apabila menguji dalam persekitaran setempat, sebaiknya gunakan pangkalan data baharu setiap kali anda menjalankan ujian. Laravel menyediakan cara yang cekap untuk mengendalikan perkara ini dengan malas menyegarkan pangkalan data sebelum setiap ujian. Ini boleh dicapai menggunakan ciri RefreshDatabase dalam kelas ujian anda. Ini memastikan bahawa pangkalan data berada dalam keadaan bersih setiap kali ujian dijalankan, menghapuskan potensi isu yang disebabkan oleh sisa data.
Gunakan ciri RefreshDatabase dalam kelas ujian anda:
php artisan make:request StorePostRequest
Apabila menguruskan maklumat sensitif, memastikan keselamatan adalah penting. Berikut ialah beberapa amalan terbaik:
Simpan maklumat sensitif (seperti kunci API dan bukti kelayakan pangkalan data) dalam fail .env dan bukannya dalam pangkalan kod.
Untuk data yang memerlukan penyulitan, gunakan ciri penyulitan Laravel:
use App\Http\Requests\StorePostRequest; class PostController { public function store(StorePostRequest $request) { $validated = $request->validated(); Post::create($validated); // Other logic... } }
Pastikan sentiasa mengemas kini kunci aplikasi (APP_KEY) dan menyulitkan semula data selepas kemas kini.
Dengan mengikuti amalan terbaik, petua dan helah ini, anda boleh meningkatkan kualiti dan keselamatan aplikasi Laravel anda dengan ketara. Kaedah ini bukan sahaja akan membantu anda menulis kod yang lebih cekap, tetapi juga memberikan pengalaman yang lebih baik untuk pengguna anda. Meneruskan mempelajari dan menggunakan amalan ini akan membantu anda mencapai kejayaan yang lebih besar dalam pembangunan anda.
Atas ialah kandungan terperinci Amalan, Petua dan Trik Terbaik Laravel untuk 5. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!