Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pemerhati Laravel: Ninja Senyap Kitar Hayat Aplikasi Anda

Pemerhati Laravel: Ninja Senyap Kitar Hayat Aplikasi Anda

Linda Hamilton
Linda Hamiltonasal
2024-11-08 02:00:02624semak imbas

Laravel Observers: The Silent Ninjas of Your Application Lifecycle

Pengenalan

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.

Apakah itu Pemerhati Laravel?

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.

Mengapa Gunakan Pemerhati?

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.

Gambaran Keseluruhan Cangkuk Fasih:

- 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.

Panduan Langkah demi Langkah: Cara Mencipta dan Menggunakan Pemerhati

Mari bincangkan Pemerhati dengan contoh dunia sebenar. Bayangkan kami sedang membina apl blog dan setiap kali pengguna menerbitkan siaran, kami mahu:

  • Menjana slug secara automatik daripada tajuk.
  • Beritahu pentadbir.
  • Rekod tarikh penerbitan.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn