Rumah > rangka kerja php > ThinkPHP > teks badan

Panduan penggunaan acara dan cangkuk ThinkPHP6: melaksanakan pencetus dan pemantauan

WBOY
Lepaskan: 2023-08-27 15:43:45
asal
943 orang telah melayarinya

Panduan penggunaan acara dan cangkuk ThinkPHP6: melaksanakan pencetus dan pemantauan

Panduan Penggunaan Acara dan Cangkuk ThinkPHP6: Melaksanakan Pencetusan dan Pemantauan

Gambaran Keseluruhan
Semasa proses pembangunan, kami selalunya perlu mengendalikan beberapa acara, seperti menghantar peringatan e-mel selepas pengguna berjaya mendaftar, atau mengemas kini cache selepas produk dikeluarkan dari rak, dsb. tunggu. Untuk mengurus acara ini dengan lebih baik, ThinkPHP6 menyediakan mekanisme acara dan cangkuk, menjadikan pencetus dan pemantauan acara lebih fleksibel dan mudah.

1. Acara dan pendengar
Acara merujuk kepada perkara yang berlaku semasa pelaksanaan program, seperti pendaftaran pengguna yang berjaya, penempatan pesanan yang berjaya, dsb. Pendengar bertindak balas terhadap peristiwa, iaitu, melakukan operasi tertentu selepas peristiwa berlaku. Peristiwa dan pendengar dalam ThinkPHP6 diurus menggunakan mod pemerhati, yang memisahkan pencetus peristiwa dan operasi yang sepadan.

  1. Daftar pendengar acara
    Dalam ThinkPHP6, anda boleh mendaftarkan pendengar acara dengan mentakrifkan kelas pendengar. Kelas pendengar terletak dalam direktori aplikasi/pendengar Apabila menentukan, anda perlu mewarisi kelas thinklistenerListener dan melaksanakan kaedah handle()nya. Sebagai contoh, kami mentakrifkan kelas UserRegisteredListener untuk mendengar peristiwa kejayaan pendaftaran pengguna:
namespace applistener;

use thinklistenerListener;

class UserRegisteredListener extends Listener
{
    // 定义事件监听方法
    public function handle($event)
    {
        // 处理事件的操作
        // 比如发送邮件通知
        // ...
    }
}
Salin selepas log masuk

Dalam kaedah handle(), anda boleh menulis operasi yang perlu dilakukan selepas peristiwa yang sepadan berlaku.

  1. Hubungan sepadan antara acara berdaftar dan pendengar
    Dalam ThinkPHP6, anda boleh menentukan hubungan sepadan antara acara dan pendengar dalam fail definisi acara. Fail definisi acara terletak dalam fail app/event.php, dan hubungan yang sepadan antara acara dan pendengar ditakrifkan melalui tatasusunan konfigurasi.
return [
    'bind' => [
        'UserRegistered' => [
            'applistenerUserRegisteredListener',
        ],
    ],
];
Salin selepas log masuk

Konfigurasi di atas menunjukkan bahawa apabila acara UserRegistered berlaku, kaedah handle() UserRegisteredListener akan dicetuskan.

2. Peristiwa pencetus
Apabila peristiwa berlaku, kami boleh memberitahu sistem dengan mencetuskan acara, dengan itu melaksanakan pendengar yang sepadan.

  1. Cara mencetuskan peristiwa
    ThinkPHP6 menyediakan dua cara untuk mencetuskan peristiwa:

(1) Pencetusan langsung: Pencetus peristiwa secara terus melalui kaedah dispatch() kelas sistem.

use thinkacadeEvent;

// 触发 UserRegistered 事件,可以传递参数
Event::dispatch('UserRegistered', $userData);
Salin selepas log masuk

(2) Pencetusan dalam bekas: Cetuskan acara melalui kaedah acara() bekas Jika ia dipanggil dalam pembina, suntikan pergantungan automatik boleh digunakan.

use thinkacadeevent;

// 通过容器内触发 UserRegistered 事件,可以传递参数
app('event')->trigger('UserRegistered', $userData);
Salin selepas log masuk
  1. Buat objek acara
    Dalam kaedah pemprosesan pendengar acara, kita boleh menerima parameter yang diluluskan apabila acara dicetuskan dengan mentakrifkan objek acara. Mencipta objek acara merangkum parameter untuk kegunaan mudah dalam pendengar.
namespace applistener;

use thinklistenerListener;
use appeventUserRegisteredEvent; // 引入事件类

class UserRegisteredListener extends Listener
{
    public function handle($event)
    {
        // 将传递的参数封装为事件对象
        $userRegisteredEvent = new UserRegisteredEvent($event);
        
        // 使用事件对象的属性
        $username = $userRegisteredEvent->username;
        // ...
    }
}
Salin selepas log masuk

3. Cangkuk
Cangkuk ialah beberapa nod utama yang dikhaskan dalam sistem Dengan mendaftarkan operasi pada nod cangkuk, fungsi lanjutan yang sepadan boleh dicapai. Nod cangkuk biasanya terletak di bahagian teras sistem, seperti permulaan permintaan, penamat permintaan, resolusi laluan, dll. Mekanisme cangkuk dalam ThinkPHP6 dilaksanakan melalui Middleware, yang membolehkan kawalan proses yang lebih fleksibel.

  1. Daftar cangkuk
    Dalam ThinkPHP6, cangkuk boleh didaftarkan melalui perisian tengah. Middleware mewarisi daripada kelas thinkMiddleware Anda boleh menyesuaikan middleware dan melaksanakan operasi yang sepadan dalam middleware.
namespace appmiddleware;

use thinkacadeEvent;

class MyMiddleware
{
    public function handle($request, Closure $next)
    {
        // 钩子操作
        // ...

        return $next($request);
    }
}
Salin selepas log masuk

Dalam kaedah pemegang() di atas, anda boleh menulis operasi yang perlu dilakukan oleh nod cangkuk yang sepadan. Selepas middleware didaftarkan, ia boleh dikonfigurasikan ke dalam middleware global sistem atau middleware penghalaan.

  1. Daftar cangkuk global
    Cakuk global merujuk kepada cangkuk yang akan dicetuskan semasa keseluruhan kitaran hayat permintaan sistem. Dalam ThinkPHP6, cangkuk global boleh didaftarkan melalui item konfigurasi middleware dalam fail config/app.php.
'middleware' => [
    // 注册全局钩子
    ppmiddlewareMyMiddleware::class,
    // ...
]
Salin selepas log masuk
  1. Daftar cangkuk penghalaan
    Kail penghalaan ialah cangkuk yang akan dicetuskan hanya apabila laluan tertentu sepadan. Dalam ThinkPHP6, cangkuk penghalaan boleh didaftarkan dengan menentukan perisian tengah dalam laluan.
Route::rule('index', 'index/index')->middleware(ppmiddlewareMyMiddleware::class);
Salin selepas log masuk

4. Ringkasan
Melalui mekanisme acara dan cangkuk, kami boleh mengendalikan acara yang berlaku dalam program dengan lebih fleksibel dan melakukan operasi yang sepadan selepas acara itu berlaku. Dalam ThinkPHP6, kita boleh mendengar acara dengan mendaftarkan pendengar dan melakukan operasi khusus apabila peristiwa berlaku. Pada masa yang sama, kami juga boleh mendaftarkan middleware untuk melaksanakan cangkuk yang sepadan untuk mencapai kawalan proses yang lebih halus.

Dengan cara ini, kita boleh memisahkan dan mengasingkan pelbagai bahagian sistem dan meningkatkan kebolehskalaan dan kebolehselenggaraan sistem.

Di atas adalah kandungan berkaitan acara ThinkPHP6 dan panduan penggunaan cangkuk saya harap ia akan membantu anda untuk memahami dan menggunakan mekanisme acara dan cangkuk dalam ThinkPHP6.

Atas ialah kandungan terperinci Panduan penggunaan acara dan cangkuk ThinkPHP6: melaksanakan pencetus dan pemantauan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan