cari
Rumahrangka kerja phpThinkPHPBagaimana untuk melaksanakan mekanisme acara Thinkphp

    Terdapat dua cara untuk melaksanakan mekanisme acara: melalui pemantauan dan melalui langganan

    1 Melalui pemantauan

    1 kelas mendengar : Masukkan direktori akar rangka kerja dalam mod baris arahan dan laksanakan

    php think make:listener

    Contohnya:

    >

    php think make:listener UserListener

    Selepas pelaksanaan, kelas apppendengar下生成UserListener akan berada dalam

    2. Konfigurasikan mendengar: Konfigurasikan kelas UserListener dalam tatasusunan dengar fail appevent.php, seperti berikut:

    'dengar' => [
    'testEvent' => ['applistenerUserListener']
    ],

    3 Pencetus mendengar: Tambahkan kod berikut di mana anda perlu mencetuskan pendengaran

    event('testEvent');

    . Nota: Parameter testEvent di sini ialah nama acara dan boleh ditakrifkan sewenang-wenangnya, tetapi ia mesti konsisten dengan nama kunci yang dikonfigurasikan dalam fail event.php.

    Anda boleh membawa parameter kedua apabila mencetuskan pendengar. Anda boleh menghantar sebarang data ke kelas UserListener melalui parameter kedua, iaitu parameter kaedah pemegang (jika anda tidak faham maksudnya, sila fahami dengan kod lengkap di bawah).

    4 Proses logik mendengar: Lengkapkan logik perniagaan dalam kaedah pemegang kelas UserListener

    Kod lengkap adalah seperti berikut

    Lain-lain: kelas untuk ujian

    <?php
    namespace app\controller;
    class Other
    {
        public function hello()
        {
            echo &#39;hello function&#39;;
        }
    }

    Indeks: Kelas yang mencetuskan pendengaran

    UserListener: Kelas mendengar acara

    <?php
    namespace app\listener;
    class UserListener
    {
        /**
         * 事件监听处理
         *
         * @return mixed
         */
        public function handle($event)
        {
            //当调用Index类的test1方法时该代码有效,$event为null
            var_dump($event);
            //当调用Index类的test2方法时该代码有效,$event为字符串hello
            var_dump($event);
            //当调用Index类的test3方法时该代码有效,$event为Index类的实例
            //可以访问Index类的name变量
            echo $event->name;
            //当调用Index类的test4方法时该代码有效,$event为Other类的实例
            //可以调用Other类的hello方法
            echo $event->hello();
        }
    }

    2 Dengan melanggan

    1

    dalam arahan Masukkan direktori akar rangka kerja dalam mod baris dan laksanakan

    php think make:subscribe

    Contohnya:

    php think make:subscribe UserSubscribe

    Selepas pelaksanaan, kelas UserSubscribe akan dijana di bawah appsubscribe.

    2. Konfigurasikan pemantauan

    Konfigurasikan kelas UserSubscribe dalam tatasusunan langganan fail "direktori akar rangka kerja" appevent.php, seperti berikut:

    ' langgan ' => ['appsubscribeUserSubscribe'],

    Nota: Untuk menguji kesan, padamkan UserListener yang dikonfigurasikan di atas daripada tatasusunan dengar

    3

    Sama seperti kaedah pertama

    4. Memproses logik pemantauan

    Terdapat dua kaedah untuk memproses logik pemantauan, yang saya panggil pengikatan automatik dan pengikatan manual. Pengikatan manual dan pengikatan automatik adalah saling eksklusif, anda hanya boleh memilih satu atau yang lain.

    4.1 Pengikatan automatik

    Kaedah ontestEvent yang melengkapkan logik perniagaan harus ditambahkan pada kelas UserSubscribe. Nama kaedah yang ditambahkan tidak boleh ditakrifkan sewenang-wenangnya Peraturannya adalah untuk menambah di hadapan nama acara. Oleh kerana nama acara yang kami takrifkan dalam event.php ialah testEvent, nama kaedah ialah ontestEvent (perhatikan kesnya). Selepas kaedah mendengar ditakrifkan, ia terikat secara automatik kepada acara, jadi saya memanggilnya mengikat automatik.

    Kod lengkap adalah seperti berikut

    Kod kelas Lain dan Indeks adalah sama dengan pendekatan pertama

    UserSubscribe: kelas langganan acara

    <?php
    namespace app\subscribe;
    class UserSubscribe
    {
        public function ontestEvent($user)
        {
            //当调用Index类的test1方法时该代码有效,$event为null
            var_dump($user);
            //当调用Index类的test2方法时该代码有效,$event为字符串hello
            var_dump($user);
            //当调用Index类的test3方法时该代码有效,$event为Index类的实例
            //可以访问Index类的name变量
            echo $user->name;
            //当调用Index类的test4方法时该代码有效,$event为Other类的实例
            //可以调用Other类的hello方法
            echo $user->hello();
        }
    }

    4.2 Pengikatan manual

    Pertama, cipta kelas acara yang bertanggungjawab untuk mengendalikan logik perniagaan tertentu. Masukkan direktori akar rangka kerja dalam mod baris arahan dan laksanakan:

    php think make:event

    Contohnya:

    php think make:event UserEvent

    Selepas pelaksanaan, kelas UserEvent akan dijana di bawah appevent.

    Kemudian tentukan kaedah pemegang dalam kelas ini, yang mempunyai parameter masuk. Nama kaedah dan nama parameter yang diluluskan boleh ditakrifkan sewenang-wenangnya. Logik perniagaan tertentu boleh dikendalikan dalam kaedah pemegang.

    Seterusnya, tambahkan kaedah langgan dalam kelas UserSubscribe, yang perlu menerima objek Acara sebagai parameter. Seterusnya, ikat pendengar acara kepada kaedah pemegang kelas UserEvent dalam fungsi ini. Seperti berikut:

    $event->listen(&#39;testEvent&#39;, [app(&#39;app\event\UserEvent&#39;), &#39;handle&#39;]);

    Kod lengkap adalah seperti berikut

    Kod kelas lain dan Indeks adalah sama dengan pendekatan pertama

    UserSubscribe: kelas langganan acara

    UserEvent: Kelas pengendalian acara

    <?php
    declare (strict_types = 1);
    namespace app\event;
    class UserEvent
    {
        public function handle($user)
        {
            //当调用Index类的test1方法时该代码有效,$user为null
            var_dump($user);
            //当调用Index类的test2方法时该代码有效,$user为字符串hello
            var_dump($user);
            //当调用Index类的test3方法时该代码有效,$user为Index类的实例
            //可以访问Index类的name变量
            echo $user->name;
            //当调用Index类的test4方法时该代码有效,$user为Other类的实例
            //可以调用Other类的hello方法
            echo $user->hello();
        }
    }

    Atas ialah kandungan terperinci Bagaimana untuk melaksanakan mekanisme acara Thinkphp. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan
    Artikel ini dikembalikan pada:亿速云. Jika ada pelanggaran, sila hubungi admin@php.cn Padam
    Apakah ciri-ciri utama rangka kerja ujian ThinkPHP?Apakah ciri-ciri utama rangka kerja ujian ThinkPHP?Mar 18, 2025 pm 05:01 PM

    Artikel ini membincangkan rangka kerja ujian ThinkPHP, yang menonjolkan ciri-ciri utamanya seperti ujian unit dan integrasi, dan bagaimana ia meningkatkan kebolehpercayaan aplikasi melalui pengesanan bug awal dan kualiti kod yang lebih baik.

    Bagaimana cara menggunakan ThinkPhp untuk membina suapan data pasaran saham masa nyata?Bagaimana cara menggunakan ThinkPhp untuk membina suapan data pasaran saham masa nyata?Mar 18, 2025 pm 04:57 PM

    Artikel membincangkan menggunakan ThinkPHP untuk suapan data pasaran saham masa nyata, memberi tumpuan kepada persediaan, ketepatan data, pengoptimuman, dan langkah-langkah keselamatan.

    Apakah pertimbangan utama untuk menggunakan ThinkPhp dalam seni bina tanpa pelayan?Apakah pertimbangan utama untuk menggunakan ThinkPhp dalam seni bina tanpa pelayan?Mar 18, 2025 pm 04:54 PM

    Artikel ini membincangkan pertimbangan utama untuk menggunakan ThinkPhp dalam arkitek tanpa pelayan, memberi tumpuan kepada pengoptimuman prestasi, reka bentuk tanpa statik, dan keselamatan. Ia menyoroti faedah seperti kecekapan kos dan skalabiliti, tetapi juga menangani cabaran

    Bagaimana untuk melaksanakan penemuan perkhidmatan dan mengimbangi beban dalam microservices ThinkPHP?Bagaimana untuk melaksanakan penemuan perkhidmatan dan mengimbangi beban dalam microservices ThinkPHP?Mar 18, 2025 pm 04:51 PM

    Artikel ini membincangkan pelaksanaan penemuan perkhidmatan dan mengimbangi beban dalam microservices ThinkPHP, memberi tumpuan kepada persediaan, amalan terbaik, kaedah integrasi, dan alat yang disyorkan. [159 aksara]

    Apakah ciri -ciri canggih bekas suntikan ketergantungan ThinkPhp?Apakah ciri -ciri canggih bekas suntikan ketergantungan ThinkPhp?Mar 18, 2025 pm 04:50 PM

    ThinkPhp's Container IOC menawarkan ciri -ciri canggih seperti pemuatan malas, mengikat kontekstual, dan suntikan kaedah untuk pengurusan ketergantungan yang cekap di php apps.Character Count: 159

    Bagaimana cara menggunakan ThinkPhp untuk membina alat kerjasama masa nyata?Bagaimana cara menggunakan ThinkPhp untuk membina alat kerjasama masa nyata?Mar 18, 2025 pm 04:49 PM

    Artikel ini membincangkan menggunakan ThinkPHP untuk membina alat kerjasama masa nyata, memberi tumpuan kepada persediaan, integrasi WebSocket, dan amalan terbaik keselamatan.

    Apakah faedah utama menggunakan ThinkPhp untuk membina aplikasi SaaS?Apakah faedah utama menggunakan ThinkPhp untuk membina aplikasi SaaS?Mar 18, 2025 pm 04:46 PM

    ThinkPHP memberi manfaat kepada aplikasi SaaS dengan reka bentuk ringan, seni bina MVC, dan extensibility. Ia meningkatkan skalabiliti, mempercepatkan pembangunan, dan meningkatkan keselamatan melalui pelbagai ciri.

    Bagaimana untuk membina sistem giliran tugas yang diedarkan dengan ThinkPhp dan RabbitMQ?Bagaimana untuk membina sistem giliran tugas yang diedarkan dengan ThinkPhp dan RabbitMQ?Mar 18, 2025 pm 04:45 PM

    Artikel ini menggariskan membina sistem giliran tugas yang diedarkan menggunakan ThinkPhp dan RabbitMQ, yang memberi tumpuan kepada pemasangan, konfigurasi, pengurusan tugas, dan skalabilitas. Isu -isu utama termasuk memastikan ketersediaan yang tinggi, mengelakkan perangkap biasa seperti implope

    See all articles

    Alat AI Hot

    Undresser.AI Undress

    Undresser.AI Undress

    Apl berkuasa AI untuk mencipta foto bogel yang realistik

    AI Clothes Remover

    AI Clothes Remover

    Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

    Undress AI Tool

    Undress AI Tool

    Gambar buka pakaian secara percuma

    Clothoff.io

    Clothoff.io

    Penyingkiran pakaian AI

    AI Hentai Generator

    AI Hentai Generator

    Menjana ai hentai secara percuma.

    Artikel Panas

    R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
    3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Tetapan grafik terbaik
    3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
    3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
    WWE 2K25: Cara Membuka Segala -galanya Di Myrise
    3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

    Alat panas

    SecLists

    SecLists

    SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

    Dreamweaver Mac版

    Dreamweaver Mac版

    Alat pembangunan web visual

    MinGW - GNU Minimalis untuk Windows

    MinGW - GNU Minimalis untuk Windows

    Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

    VSCode Windows 64-bit Muat Turun

    VSCode Windows 64-bit Muat Turun

    Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

    EditPlus versi Cina retak

    EditPlus versi Cina retak

    Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod