Bayangkan apabila anda menyerahkan borang di tapak web, Pembantu yang tidak kelihatan masuk dan menyemak semuanya sekali lagi. Tambahkan butiran tambahan Atau hantar surat alu-aluan tanpa perlu mengangkat jari. Pemerhati Laravel adalah seperti pembantu di belakang tabir yang bekerja dengan senyap. Dan ia berkuasa untuk mengendalikan semua tugas apabila anda memerlukannya. Dalam siaran ini, kami akan menyelami cara pemerhati berfungsi dalam Laravel, sebab mereka adalah ninja senyap apl anda dalam pengendalian acara model. dan cara memanfaatkan sepenuhnya peristiwa tersebut dalam contoh dunia nyata.
Pemerhati Laravel ialah kelas pendengar yang membantu mengurus kitaran hayat model anda dengan memerhati peristiwa tertentu, seperti mencipta, mengemas kini atau memadam. Pemerhati boleh menentukan tindakan untuk setiap peristiwa ini. Pastikan pengawal dan model anda bersih dan fokus. Pemerhati bertindak sebagai "pakar acara" dalam aplikasi anda Pemerhati akan mengendalikan kerja bahagian belakang yang diperlukan untuk menambah baik pangkalan kod anda. dan meningkatkan organisasi dan kecekapan Dengan pemisahan kerja yang didorong oleh peristiwa. Pemerhati menyumbang kepada struktur aplikasi yang lebih modular dan boleh diselenggara.
1. Pengawal dan Model yang Lebih Bersih: Pemerhati mengendalikan tindakan berulang, membenarkan pengawal dan model anda menumpukan pada tugas utama mereka tanpa gangguan.
2. Kebolehgunaan Semula Kod: Anda boleh menyatukan tindakan berkaitan di satu tempat, menjadikan kod anda lebih mudah dibaca dan diselenggara.
3. Pengendalian Ralat: Pemerhati membantu anda mengelakkan ralat dengan mengautomasikan tugas seperti pengesahan data atau kemas kini latar belakang apabila model berubah.
4. Pengendalian Acara Automatik: Ingin mencetuskan tindakan setiap kali rekod dibuat atau dikemas kini? Pemerhati menyokong anda.
Ringkasnya, Pemerhati hebat untuk mengatur logik yang anda mahu laksanakan semasa pelbagai peringkat kitaran hayat apl anda.
- Diperoleh: Dicetuskan selepas rekod diambil daripada pangkalan data.
- Mencipta: Menyala sejurus sebelum rekod baharu dibuat.
- Dibuat: Melaksanakan selepas rekod baharu berjaya dibuat.
- Mengemas kini: Diaktifkan sebelum rekod sedia ada dikemas kini.
- Dikemas kini: Terbakar selepas rekod dikemas kini.
- Menyimpan: Dijalankan sebelum rekod disimpan, sama ada ciptaan baharu atau kemas kini.
- Disimpan: Berlaku selepas rekod disimpan, sama ada yang baru dibuat atau dikemas kini.
- Memadam: Dimulakan sebelum rekod dipadamkan atau dipadam lembut.
- Dipadamkan: Aktif selepas rekod dipadamkan atau dipadam lembut.
- Memulihkan: Menyala sebelum rekod yang dipadam lembut dipulihkan.
- Dipulihkan: Berjalan selepas rekod yang dipadam lembut berjaya dipulihkan.
Mari bincangkan Pemerhati dengan contoh dunia sebenar. Bayangkan kami sedang membina apl blog dan setiap kali pengguna menerbitkan siaran, kami mahu:
Begini cara kita boleh membuat perkara ini berlaku dengan Pemerhati Laravel!
Langkah 1: Buat Kelas Pemerhati
Laravel memudahkan untuk menjana kelas pemerhati. Jalankan arahan ini:
php artisan make:observer PostObserver --model=Post
Ini akan menjana kelas PostObserver dalam direktori aplikasi/Pemerhati dan memautkannya ke model Post kami.
Langkah 2: Tentukan Peristiwa dalam Pemerhati
Buka kelas PostObserver, dan anda akan melihat beberapa kaedah berguna yang sudah sedia ada. Setiap kaedah sepadan dengan acara model, seperti membuat, mengemas kini, memadamkan dan banyak lagi.
Mari tambahkan logik tersuai kami pada acara penciptaan supaya ia menghasilkan slug dan merekodkan tarikh penerbitan:
use Illuminate\Support\Str; class PostObserver { public function creating(Post $post) { $post->slug = Str::slug($post->title); $post->published_at = now(); } public function created(Post $post) { Notification::send(User::admin(), new PostPublishedNotification($post)); } }
Langkah 3: Daftarkan Pemerhati
Laravel menawarkan dua cara untuk melakukan ini: atribut ObservedBy pada model atau secara manual menggunakan kaedah observe
1.Menggunakan Atribut ObservedBy
Jika anda menggunakan Laravel 10 , anda boleh menggunakan atribut ObservedBy terus pada model anda. Atribut ini memudahkan pendaftaran Pemerhati dengan memautkan Pemerhati secara automatik kepada model:
use App\Observers\PostObserver; use Illuminate\Database\Eloquent\Concerns\ObservedBy; #[ObservedBy(PostObserver::class)] class Post extends Model { // Your Post model code }
Pendekatan ini bersih dan mengekalkan pendaftaran Observer dengan model itu sendiri, mengurangkan langkah persediaan dan memastikan AppServiceProvider anda tidak disentuh.
2.Mendaftarkan Pemerhati Secara Manual
Jika anda lebih suka (atau sedang bekerja dalam versi Laravel sebelum 10), anda boleh mendaftarkan Observer secara manual dalam kaedah but AppServiceProvider:
Dalam AppProvidersAppServiceProvider.php anda, tambahkan kaedah observe untuk memautkan Observer kepada model:
php artisan make:observer PostObserver --model=Post
Setelah didaftarkan, Laravel akan mencetuskan kaedah Pemerhati anda apabila peristiwa yang sepadan berlaku pada model Post.
Langkah 4: Menguji Pemerhati Anda
Untuk melihat pemerhati anda sedang beraksi, cuba buat atau kemas kini siaran dalam apl anda. Slug akan menjana secara automatik, tarikh penerbitan akan ditetapkan sendiri dan pentadbir hipotetikal kami akan menerima pemberitahuan. Pemerhati membuat semua ini berlaku secara senyap, seperti ninja sejati.
Terima kasih kerana membaca! Saya harap ini mencetuskan beberapa idea baharu untuk projek anda. Jika anda berminat untuk menghidupkan pembangunan yang berkualiti, sila hubungi—saya ingin berhubung dan meneroka cara kami boleh merealisasikannya.
Atas ialah kandungan terperinci Pemerhati Laravel: Ninja Senyap Kitar Hayat Aplikasi Anda. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!