Rumah > Artikel > pembangunan bahagian belakang > Pemerhati Corak Reka Bentuk: sistem pemberitahuan yang berkuasa
Dalam pembangunan aplikasi anda, anda sering memerlukan aplikasi anda untuk dapat bertindak balas terhadap acara secara fleksibel. Sebagai contoh, katakan anda ingin memberitahu berbilang sistem apabila tindakan tertentu berlaku (seperti pendaftaran pengguna). Di sinilah Corak Pemerhati masuk. Corak ini membolehkan anda mewujudkan hubungan antara objek, supaya apabila keadaan satu berubah, semua yang lain dimaklumkan dan dikemas kini secara automatik.
Symfony telah melaksanakan corak ini dengan berkesan terima kasih kepada Penghantar Acara, yang menjadikannya sangat praktikal dan berkuasa untuk digunakan dalam projek anda.
Pemerhati Corak membolehkan anda mentakrifkan hubungan antara subjek yang diperhatikan dengan seorang atau lebih pemerhati. Apabila perubahan keadaan berlaku pada objek yang diperhatikan, semua pemerhati dimaklumkan supaya mereka boleh bertindak balas dengan sewajarnya.
Begini cara ia berfungsi:
Mari bayangkan anda mempunyai tapak di mana pengguna boleh mendaftar. Dengan setiap pendaftaran, anda ingin menghantar e-mel alu-aluan, menambah pengguna pada senarai surat berita dan memaklumkan sistem analitis.
Daripada mengekodkan semua perkara secara tegar di satu tempat, anda boleh menyerahkan tugasan ini kepada pemerhati berbeza yang akan dimaklumkan sebaik sahaja peristiwa "pengguna berdaftar" dicetuskan.
Dalam Symfony, anda akan menggunakan Penghantar Acara untuk menyediakan Pemerhati Corak. Ini akan membolehkan anda menyusun kod dengan kemas dan menjadikannya boleh dikembangkan tanpa mengubah logik asas.
Kami akan bermula dengan mencipta acara yang akan dihantar apabila pengguna mendaftar. Yang terakhir akan mengandungi maklumat pengguna.
Kini, dalam pengawal atau perkhidmatan anda, anda akan menghantar acara ini apabila pengguna mendaftar.
Seterusnya, anda perlu mencipta pemerhati, yang akan dipanggil setiap kali acara pendaftaran dihantar. Di sini, anda mempunyai contoh di mana kami menghantar e-mel dan menambahkan pengguna pada senarai surat berita.
Anda kini mesti mendaftarkan pendengar dalam konfigurasi supaya mereka mendengar acara pengguna.berdaftar.
Dalam config/services.yaml, tambahkan pemerhati sebagai perkhidmatan:
ℹ️ Sejak versi 5.3 Symfony, anda boleh menggunakan atribut PHP untuk mengkonfigurasi perkhidmatan dan pendengar acara. Ini ialah pendekatan yang lebih moden yang membolehkan anda mengisytiharkan acara terus dalam kelas, bukannya menggunakan fail services.yaml.
Oleh itu, anda boleh menggunakan atribut #[AsEventListener] secara langsung pada kaedah pendengar anda.
Saya akan menunjukkan kepada anda cara menyesuaikan dua pemerhati dengan atribut (jadi tidak perlu konfigurasi khas dalam config/services.yaml? :
Apabila anda mendaftarkan pengguna dengan RegistrationController, acara itu dihantar dan Symfony secara automatik memanggil pemerhati yang sepadan. E-mel dihantar dan pengguna ditambahkan pada senarai surat berita tanpa tindakan/logik ini dicampur dengan kod perniagaan anda.
Kerana ia adalah penting! Ia akan membolehkan permohonan anda menjadi:
Pemerhati Corak sering mendapat tempatnya dalam seni bina berdasarkan DDD (Reka Bentuk Dipacu Domain), di mana acara ialah elemen utama (Acara Domain). Peristiwa ini membenarkan bahagian sistem yang berlainan untuk bertindak balas, selalunya di luar domain utama. Tetapi itu perbincangan untuk artikel penuh masa hadapan tentang DDD!
Atas ialah kandungan terperinci Pemerhati Corak Reka Bentuk: sistem pemberitahuan yang berkuasa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!