Petua Pantas: Keajaiban pemerhati yang fasih
pemerhati model fasih: mengendalikan peristiwa model dengan anggun di Laravel
Jika anda telah menggunakan fasih dalam projek sederhana dan besar sebelum ini, anda mungkin menghadapi situasi di mana anda perlu mengambil tindakan apabila model berubah. Eloquent menyediakan cara yang mudah untuk melakukan ini.
Dalam contoh kami, model fasih dapat memaklumkan kepada kami tentang perubahan mengenai model yang diberikan.corak pemerhati adalah corak reka bentuk perisian di mana objek (dipanggil subjek) mengekalkan senarai kebergantungannya (dipanggil pemerhati) dan secara automatik memberitahu mereka apabila mana -mana keadaan berubah, biasanya melalui salah satu kaedah yang memanggil mereka. - Wikipedia
peristiwa model
Eloquent menyediakan beberapa peristiwa berguna untuk memantau
status model: , , creating
, created
, updating
, updated
, deleting
, deleted
, saving
, saved
, restoring
, 🎜>, restored
,
Perhatikan perbezaan antara "ing/ed":
-
creating
: Simpan ahli baru sebelum memanggil. -
created
: Dipanggil selepas menyimpan ahli.
Fasih juga mencetuskan peristiwa serupa yang dapat kita dengar . Contoh berikut melampirkan pendengar ke peristiwa Member
model creating
.
Event::listen("eloquent.creating: App\Member", function(Member $member) { // 执行某些操作 });
Buat pemerhati
mari kita mulakan dengan membuat kelas baru di bawah ruang nama App\Observers
dan mula menentukan kaedah kami.
// app/Observers/MemberObserver.php namespace App\Observers; use App\Member; class MemberObserver { public function deleting(Member $member) { // 执行某些操作 } }
kita boleh menggunakan nama acara sebagai nama setiap kaedah. Kami tidak perlu menentukan semua kaedah, kami hanya menentukan kaedah yang kami mahu gunakan.
Setiap ahli boleh melanggan pelbagai perkhidmatan, masing -masing mengandungi banyak ahli. Mari kita anggap kita tidak menetapkan penghapusan cascading untuk jadual yang berkaitan, kita perlu memadamkan perkhidmatan yang berkaitan apabila ahli dipadam untuk mengelakkan kesilapan apabila mengakses ahli perkhidmatan yang dilanggan. members_services
// app/Observers/MemberObserver.php namespace App\Observers; use App\Member; class MemberObserver { public function deleting(Member $member) { $member->services()->delete(); } }
dalam fail app\Providers\AppProvider.php
. boot
class AppServiceProvider extends ServiceProvider { /** * 引导任何应用程序服务。 * * @return void */ public function boot() { Member::observe(MemberObserver::class); // 使用类名注册观察者 } }
Kelebihan pemerhati yang fasih adalah bahawa kita dapat membatalkan operasi semasa dengan mengembalikan nilai
dari kaedah panggil balik:
false
class MemberObserver { public function deleting(Member $member) { $member->deleted_at = Carbon::now(); $member->save(); return false; } }
Eloquent mempunyai banyak ciri tersembunyi, dan ini adalah salah satu daripada mereka. Anda akan melihat ini digunakan secara meluas dalam aplikasi besar dan dalam CMS. Jika anda mempunyai sebarang pertanyaan atau komen mengenai fasih, pastikan anda menyiarkan di bawah!
Soalan Lazim Mengenai Pemerhati yang fasih di Laravel
Apakah tujuan menggunakan pemerhati fasih di Laravel?
Pemerhati yang fasih di Laravel digunakan untuk memproses logik perniagaan yang perlu berlaku sebelum atau selepas operasi pangkalan data tertentu, seperti membuat, mengemas kini, memadam, atau memulihkan contoh model. Mereka menyediakan cara yang mudah dan teratur untuk menguruskan acara -acara ini daripada menyebarkannya sepanjang aplikasi. Ini menjadikan kod anda lebih ringkas, lebih mudah untuk mengurus dan mengekalkan.
Bagaimana untuk membuat pemerhati yang fasih di Laravel?
Untuk membuat pemerhati yang fasih di Laravel, anda perlu membuat kelas pemerhati. Kelas ini akan mengandungi kaedah yang menunjukkan peristiwa fasih yang anda mahu cangkuk. Setiap kaedah ini menerima model sebagai parameter uniknya. Laravel tidak mengandungi arahan untuk menjana pemerhati, jadi anda perlu membuat kelas ini secara manual dalam direktori app/Observers
anda.
Bagaimana untuk mendaftar untuk pemerhati yang fasih?
Selepas membuat kelas pemerhati, anda perlu mendaftarkannya kepada model yang harus diperhatikan. Ini biasanya dilakukan dalam salah satu kaedah penyedia perkhidmatan anda. Dalam kaedah ini, anda harus memanggil kaedah boot
pada model yang anda ingin perhatikan dan lulus dalam nama kelas pemerhati. observe
Ya, anda boleh melihat pelbagai model menggunakan pemerhati tunggal. Walau bagaimanapun, ia sering disyorkan untuk membuat pemerhati berasingan bagi setiap model untuk memastikan kod itu teratur dan mudah dikekalkan. Jika anda memilih untuk memerhatikan pelbagai model dengan pemerhati tunggal, anda perlu memastikan bahawa kaedah pemerhati dapat mengendalikan semua model dengan betul.
Apakah peristiwa fasih yang boleh saya perhatikan?
Orm Laravel yang fasih mencetuskan pelbagai peristiwa, yang membolehkan anda menyambung ke pelbagai titik dalam kitaran hayat model. Peristiwa -peristiwa ini termasuk
, retrieved
, creating
, created
, updating
, updated
, saving
, saved
, deleting
, deleted
, restoring
, restored
,
, dan
. Setiap acara dicetuskan pada masa yang tepat, dan kaedah pemerhati anda boleh mendengar mana -mana atau semua peristiwa ini.
false
Bolehkah saya menghentikan peristiwa yang fasih daripada menyebarkan di kalangan pemerhati?
Bagaimana menggunakan pemerhati yang fasih untuk pengesahan?
pemerhati yang fasih boleh digunakan untuk mengesahkan dengan mendengar peristiwa creating
atau updating
. Dalam kaedah pemerhati peristiwa ini, anda boleh melakukan apa -apa pemeriksaan pengesahan yang diperlukan. Sekiranya pengesahan gagal, anda boleh kembali false
untuk mengelakkan model daripada disimpan.
Bolehkah saya menggunakan pemerhati yang fasih dengan padam lembut?
Ya, pemerhati fasih boleh digunakan dengan padam lembut. Peristiwa restoring
dicetuskan apabila model padam lembut pulih. Begitu juga, apabila model dipadamkan dengan lembut, peristiwa restored
dipicu, dan apabila model dipadamkan dengan lembut, acara deleting
dicetuskan. deleted
anda boleh mengakses nilai lama model dalam pemerhati menggunakan kaedah
pada model. Kaedah ini mengembalikan nilai asal sifat model, yang membolehkan anda membandingkannya dengan nilai semasa model. getOriginal
Ya, pemerhati fasih adalah cara terbaik untuk merakam perubahan model. Anda boleh mendengar peristiwa
, created
dan updated
dan kemudian merekodkan perubahan dalam kaedah pemerhati peristiwa -peristiwa ini. Ini sangat berguna untuk tujuan audit atau untuk aplikasi debug. deleted
Atas ialah kandungan terperinci Petua Pantas: Keajaiban pemerhati yang fasih. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas











Dalam php, kata laluan_hash dan kata laluan 1) password_hash menjana hash yang mengandungi nilai garam untuk meningkatkan keselamatan. 2) Kata Laluan_verify Sahkan kata laluan dan pastikan keselamatan dengan membandingkan nilai hash. 3) MD5 dan SHA1 terdedah dan kekurangan nilai garam, dan tidak sesuai untuk keselamatan kata laluan moden.

Jenis PHP meminta untuk meningkatkan kualiti kod dan kebolehbacaan. 1) Petua Jenis Skalar: Oleh kerana Php7.0, jenis data asas dibenarkan untuk ditentukan dalam parameter fungsi, seperti INT, Float, dan lain -lain. 2) Return Type Prompt: Pastikan konsistensi jenis nilai pulangan fungsi. 3) Jenis Kesatuan Prompt: Oleh kerana Php8.0, pelbagai jenis dibenarkan untuk ditentukan dalam parameter fungsi atau nilai pulangan. 4) Prompt jenis yang boleh dibatalkan: membolehkan untuk memasukkan nilai null dan mengendalikan fungsi yang boleh mengembalikan nilai null.

PHP terutamanya pengaturcaraan prosedur, tetapi juga menyokong pengaturcaraan berorientasikan objek (OOP); Python menyokong pelbagai paradigma, termasuk pengaturcaraan OOP, fungsional dan prosedur. PHP sesuai untuk pembangunan web, dan Python sesuai untuk pelbagai aplikasi seperti analisis data dan pembelajaran mesin.

PHP dan Python mempunyai kelebihan dan kekurangan mereka sendiri, dan pilihannya bergantung kepada keperluan projek dan keutamaan peribadi. 1.PHP sesuai untuk pembangunan pesat dan penyelenggaraan aplikasi web berskala besar. 2. Python menguasai bidang sains data dan pembelajaran mesin.

Menggunakan penyataan preprocessing dan PDO dalam PHP secara berkesan dapat mencegah serangan suntikan SQL. 1) Gunakan PDO untuk menyambung ke pangkalan data dan tetapkan mod ralat. 2) Buat kenyataan pra -proses melalui kaedah menyediakan dan lulus data menggunakan ruang letak dan laksanakan kaedah. 3) Hasil pertanyaan proses dan pastikan keselamatan dan prestasi kod.

PHP menggunakan sambungan MySQLI dan PDO untuk berinteraksi dalam operasi pangkalan data dan pemprosesan logik sisi pelayan, dan memproses logik sisi pelayan melalui fungsi seperti pengurusan sesi. 1) Gunakan MySQLI atau PDO untuk menyambung ke pangkalan data dan laksanakan pertanyaan SQL. 2) Mengendalikan permintaan HTTP dan status pengguna melalui pengurusan sesi dan fungsi lain. 3) Gunakan urus niaga untuk memastikan atomik operasi pangkalan data. 4) Mencegah suntikan SQL, gunakan pengendalian pengecualian dan sambungan penutup untuk debugging. 5) Mengoptimumkan prestasi melalui pengindeksan dan cache, tulis kod yang sangat mudah dibaca dan lakukan pengendalian ralat.

PHP digunakan untuk membina laman web dinamik, dan fungsi terasnya termasuk: 1. Menjana kandungan dinamik dan menghasilkan laman web secara real time dengan menyambung dengan pangkalan data; 2. Proses Interaksi Pengguna dan Penyerahan Bentuk, Sahkan Input dan Menanggapi Operasi; 3. Menguruskan sesi dan pengesahan pengguna untuk memberikan pengalaman yang diperibadikan; 4. Mengoptimumkan prestasi dan ikuti amalan terbaik untuk meningkatkan kecekapan dan keselamatan laman web.

PHP sesuai untuk pembangunan web dan prototaip pesat, dan Python sesuai untuk sains data dan pembelajaran mesin. 1.Php digunakan untuk pembangunan web dinamik, dengan sintaks mudah dan sesuai untuk pembangunan pesat. 2. Python mempunyai sintaks ringkas, sesuai untuk pelbagai bidang, dan mempunyai ekosistem perpustakaan yang kuat.
