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
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
Events::on('post_controller_constructor', 'some_function', 25);
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
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
Events::simulate(true);
Anda dapat menghentikan simulasi dengan melewatkan false:Your_code_here
Events::simulate(false);
Poin Acara
- 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/