Acara Codeigniter 4

Acara Codeigniter 4

Candil.eu.org - Fitur Acara CodeIgniter menyediakan sarana untuk memasuki dan memodifikasi cara kerja bagian dalam kerangka kerja tanpa meretas file inti. Ketika CodeIgniter dijalankan, ia mengikuti proses eksekusi tertentu. Namun, mungkin ada beberapa contoh ketika Anda ingin menyebabkan beberapa tindakan terjadi pada tahap tertentu dalam proses eksekusi. Misalnya, Anda mungkin ingin menjalankan skrip tepat sebelum pengontrol Anda dimuat, atau tepat setelahnya, atau Anda mungkin ingin memicu salah satu skrip Anda sendiri di beberapa lokasi lain.


Peristiwa bekerja pada pola terbitkan/berlangganan , di mana suatu peristiwa dipicu di beberapa titik selama eksekusi skrip. Skrip lain dapat "berlangganan" ke acara itu dengan mendaftar ke kelas Acara untuk memberi tahu bahwa mereka ingin melakukan tindakan saat peristiwa itu dipicu.

Mengaktifkan Acara

Acara selalu diaktifkan, dan tersedia secara global.

Mendefinisikan sebuah Acara

Sebagian besar acara didefinisikan dalam file app/Config/Events.php . Anda dapat berlangganan tindakan ke acara dengan metode kelas Acara on(). Parameter pertama adalah nama acara untuk berlangganan. Parameter kedua adalah callable yang akan dijalankan saat peristiwa itu dipicu:
use CodeIgniterEventsEvents;

Events::on('pre_system', ['MyClass', 'MyFunction']);

Dalam contoh ini, setiap kali event pre_controller dijalankan, sebuah instance dari MyClass dibuat dan MyFunction metode dijalankan. Perhatikan bahwa parameter kedua dapat berupa segala bentuk callable yang dikenali PHP:
// Call a standalone function
Events::on('pre_system', 'some_function');

// Call on an instance method
$user = new User();
Events::on('pre_system', [$user, 'some_method']);

// Call on a static method
Events::on('pre_system', 'SomeClass::someMethod');

// Use a Closure
Events::on('pre_system', function(...$params)
{
        . . .
});

Menetapkan Prioritas

Karena beberapa metode dapat dilanggankan ke satu peristiwa, Anda akan memerlukan cara untuk menentukan urutan pemanggilan metode tersebut. Anda dapat melakukan ini dengan melewatkan nilai prioritas sebagai parameter ketiga dari on() metode ini. Nilai yang lebih rendah dieksekusi terlebih dahulu, dengan nilai 1 memiliki prioritas tertinggi, dan tidak ada batasan pada nilai yang lebih rendah:

Events::on('post_controller_constructor', 'some_function', 25);

Setiap pelanggan dengan prioritas yang sama akan dieksekusi dalam urutan yang ditentukan.

Tiga konstanta ditentukan untuk Anda gunakan, yang menetapkan beberapa rentang bermanfaat pada nilai. Anda tidak diharuskan untuk menggunakan ini tetapi Anda mungkin menemukan mereka membantu keterbacaan:
define('EVENT_PRIORITY_LOW', 200);
define('EVENT_PRIORITY_NORMAL', 100);
define('EVENT_PRIORITY_HIGH', 10);

Setelah diurutkan, semua pelanggan dieksekusi secara berurutan. Jika ada pelanggan yang mengembalikan nilai salah boolean, maka eksekusi pelanggan akan berhenti.

Menerbitkan Acara Anda sendiri

Pustaka Acara juga memudahkan Anda membuat acara dalam kode Anda sendiri. Untuk menggunakan fitur ini, Anda hanya perlu memanggil trigger() metode pada kelas Acara dengan nama acara:
CodeIgniterEventsEvents::trigger('some_event');

Anda dapat meneruskan sejumlah argumen ke pelanggan dengan menambahkannya sebagai parameter tambahan. Pelanggan akan diberikan argumen dalam urutan yang sama seperti yang didefinisikan:
CodeIgniterEventsEvents::trigger('some_events', $foo, $bar, $baz);

Events::on('some_event', function($foo, $bar, $baz) {
        ...
});

Simulasi Acara

Selama pengujian, Anda mungkin tidak ingin peristiwa tersebut benar-benar diaktifkan, karena mengirimkan ratusan email setiap hari lambat dan kontra-produktif. Anda dapat memberi tahu kelas Acara untuk hanya mensimulasikan menjalankan acara dengan simulate() metode tersebut. Jika true , semua peristiwa akan dilewati selama metode pemicu. Segala sesuatu yang lain akan bekerja seperti biasa, meskipun.
Events::simulate(true);
Anda dapat menghentikan simulasi dengan melewatkan false:
Your_code_here
Events::simulate(false);

Poin Acara

Berikut adalah daftar event point yang tersedia dalam kode inti CodeIgniter:

  • pre_system Dipanggil sangat awal selama eksekusi sistem. Hanya kelas benchmark dan event yang telah dimuat pada saat ini. Tidak ada perutean atau proses lain yang terjadi.
  • post_controller_constructor Dipanggil segera setelah pengontrol Anda dipakai, tetapi sebelum pemanggilan metode apa pun terjadi.
  • post_system Dipanggil setelah halaman render akhir dikirim ke browser, pada akhir eksekusi sistem setelah data final dikirim ke browser.
  • email Dipanggil setelah email berhasil dikirim dari CodeIgniter\Email\Email. Menerima array Email properti kelas sebagai parameter.
  • DBQuery Dipanggil setelah query database berhasil diselesaikan. Menerima Queryobjek.
  • migrasi Dipanggil setelah panggilan migrasi berhasil ke latest() atau regress(). Menerima properti MigrationRunnersaat ini serta nama metode.

Sumber : codeigniter.com/