国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Jadual Kandungan
前言
舉例說明
鉤子的簡單實現(xiàn)代碼
鉤子核心類Hook.php:
簡單的插件demo:
插件實現(xiàn)的地方,即上文的注冊的文件:
入口文件index.php
運行接口如下:
Rumah rangka kerja php ThinkPHP Apakah mekanisme pelaksanaan cangkuk pemalam thinkphp?

Apakah mekanisme pelaksanaan cangkuk pemalam thinkphp?

May 27, 2023 am 09:07 AM
thinkphp

    現(xiàn)在主流的cms或者blog等系統(tǒng)中,都內(nèi)置的有插件系統(tǒng),但是層層深入、剖析實現(xiàn)的方式,其實都是最簡單的鉤子的復(fù)雜化的實現(xiàn)。

    前言

    插件的執(zhí)行通過鉤子來觸發(fā);可以把插件看作掛在鉤子上的東西;插件只有在成功實現(xiàn)相應(yīng)鉤子方法并被正確安裝啟用后才能執(zhí)行。

    開發(fā)者也可以用hook('test')方法在控制器只加入鉤子,讓你的應(yīng)用具有更好的擴展性;同時也可以模板里加入鉤子{:hook('footer')};鉤子也支持傳入?yún)?shù)hook('footer',array('test'=>1));

    向系統(tǒng)暴露你的鉤子,就是把你的鉤子在相應(yīng)的文件里列出來,系統(tǒng)會來檢測。

    {:hooks('documentDetailAfter')}

    這個的意思就是:相當于在這邊 打一個點 ,我們可以將插件掛載到那
    官方的說法是:文檔末尾顯示顯示的 鉤子
    意思就是說,在文檔末尾的時候,會自動調(diào)用掛載在那個 鉤子 上的插件

    舉例說明

    php中所謂的鉤子,其實就是一種事件驅(qū)動,主要分為‘注冊事件’、‘觸發(fā)事件’兩步。所謂‘注冊事件’,即目的是給未來可能發(fā)生的'事情'起一個名字,名字,可以用單例模式或者注冊 為一個全局的變量,用的時候直接在對應(yīng)的方法或者類再或者函數(shù)中插入這個變量即可;‘觸發(fā)事件’,本質(zhì)上就是在事件的全局變量中查詢要觸發(fā)的時間名稱,然后找到注冊號的類與方法,實例化運行。
    舉個例子來說明一下。
    項目經(jīng)理給我們了如下的需求:
    第一天:開發(fā)注冊的功能。
    程序員巴拉巴拉,三下五除二就完成了。
    第二天:在注冊前添加發(fā)送短信驗證碼的功能。
    程序員巴拉巴拉,三峽五除二就又完成了。
    第三天:注冊完成之后,給用戶添加相應(yīng)的積分。
    程序員又開始巴拉巴拉ing……

        class Register{
            public function index(){
                /**
                 * 第二天發(fā)送短信功能
                 */
                
                /**
                 * 第一天注冊代碼
                 */
                
                /**
                 * 第三天增加積分功能 
                 */
            }
        }

    這樣一個人開發(fā)還好,多個人開發(fā),勢必會造成配合麻煩的問題,同時代碼也會變得混亂。

    作為優(yōu)秀程序員的我們,當然不容許我們程序中代碼冗余、混亂的出現(xiàn),于是我們把方法寫成函數(shù)獨立出來,方便調(diào)用與代碼簡介。于是形成如下代碼:

        class Register{
            public function index(){
                /**
                 * 第二天發(fā)送短信功能
                 */
                 sendMsg($data);
                /**
                 * 第一天注冊代碼
                 */
                
                /**
                 * 第三天增加積分功能 
                 */
                sendIntegral($data);
            }
        }
        /**
         * 發(fā)送短信
         * @param  {[type]} $data [description]
         * @return {[type]}       [description]
         */
        function sendMsg($data){
            /*
                    balabala
             */
        }
        /**
         * 贈送積分
         * @param  {[type]} $data [description]
         * @return {[type]}       [description]
         */
        function sendIntegral($data){
            /*
                    balabala
             */
        }

    但是我們想要把程序開元出去讓更多的人參與,這種直接修改源碼碼的方式始終不是太好,這個時候,我們就可以使用鉤子的方式,在注冊成功前后注冊兩個鉤子,我們只需要把鉤子告訴開發(fā)人員就行了,這樣他們不用改變源碼碼就可以輕易的進行拓展。

        class Register{
            public function index(){
                
                //注冊前鉤子
                Hook::run('registerBefore');
                /**
                 * 注冊代碼
                 */
                
                //注冊后鉤子
                Hook::run('registerAfter');
            }
        }

    鉤子的簡單實現(xiàn)代碼

    目錄結(jié)構(gòu):../hook/Hook.php

    鉤子核心類Hook.php:

        <?php
        
        namespace hook;
        class Hook{
            
            static protected $hook = [];
            
            /**
             * 插件注冊
             * @param [type] $name   [description]
             * @param [type] $addons [description]
             */
            static public function add($name,$addons){
                self::$hook[$name] = $addons;
            }
            /**
             * 插件執(zhí)行
             * @param  [type] $name [description]
             * @return [type]       [description]
             */
            static public function run($name){
                if(isset(self::$hook[$name])){
                    $method = (new self::$hook[$name]());
                       call_user_func([$method,$name]);
                }
                
            }
        }

    簡單的插件demo:

        <?php
        namespace addons\demo;
        class Demo{
            public function registerBefore(){
                echo &#39;registerBefore&#39;.&#39;</br>&#39;;
            }
            public function registerAfter(){
                echo &#39;registerAfter&#39;.&#39;</br>&#39;;
            }    
        }

    插件實現(xiàn)的地方,即上文的注冊的文件:

        <?php
        namespace index\controller;
        use hook\Hook;
        class Index{
            public function index(){
                Hook::run(&#39;registerBefore&#39;);
                echo &#39;注冊完成&#39;.&#39;</br>&#39;;
                Hook::run(&#39;registerAfter&#39;);
                
            }
        }

    入口文件index.php

        <?php
        use index\controller\Index;
        spl_autoload_register(&#39;autoload&#39;);
        function autoload($name){
            require_once(&#39;/&#39;.str_replace(&#39;\\&#39;,&#39;/&#39;,$name).&#39;.php&#39;);
        }
        //插件注冊
        hook\Hook::add(&#39;registerBefore&#39;,&#39;\\addons\\demo\\Demo&#39;);
        hook\Hook::add(&#39;registerAfter&#39;,&#39;\\addons\\demo\\Demo&#39;);
        //調(diào)用
        $index = new Index();
        $index->index();

    運行接口如下:

    • ????registerBefore

    • ????注冊完成

    • ????registerAfter

    如果要添加新的功能,程序員只要修改demo的插件就可,如果要拓展新的功能,只需要拓展registerBefore和registerAfter即可。?

    Atas ialah kandungan terperinci Apakah mekanisme pelaksanaan cangkuk pemalam thinkphp?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    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

    Alat AI Hot

    Undress AI Tool

    Undress AI Tool

    Gambar buka pakaian secara percuma

    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.

    Clothoff.io

    Clothoff.io

    Penyingkiran pakaian AI

    Video Face Swap

    Video Face Swap

    Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

    Alat panas

    Notepad++7.3.1

    Notepad++7.3.1

    Editor kod yang mudah digunakan dan percuma

    SublimeText3 versi Cina

    SublimeText3 versi Cina

    Versi Cina, sangat mudah digunakan

    Hantar Studio 13.0.1

    Hantar Studio 13.0.1

    Persekitaran pembangunan bersepadu PHP yang berkuasa

    Dreamweaver CS6

    Dreamweaver CS6

    Alat pembangunan web visual

    SublimeText3 versi Mac

    SublimeText3 versi Mac

    Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

    Topik panas

    Tutorial PHP
    1502
    276
    Bagaimana untuk menjalankan projek thinkphp Bagaimana untuk menjalankan projek thinkphp Apr 09, 2024 pm 05:33 PM

    Untuk menjalankan projek ThinkPHP, anda perlu: memasang Komposer untuk mencipta projek, masukkan direktori projek dan laksanakan php bin/console serve;

    Terdapat beberapa versi thinkphp Terdapat beberapa versi thinkphp Apr 09, 2024 pm 06:09 PM

    ThinkPHP mempunyai berbilang versi yang direka untuk versi PHP yang berbeza. Versi utama termasuk 3.2, 5.0, 5.1 dan 6.0, manakala versi kecil digunakan untuk membetulkan pepijat dan menyediakan ciri baharu. Versi stabil terkini ialah ThinkPHP 6.0.16. Apabila memilih versi, pertimbangkan versi PHP, keperluan ciri dan sokongan komuniti. Adalah disyorkan untuk menggunakan versi stabil terkini untuk prestasi dan sokongan terbaik.

    Bagaimana untuk menjalankan thinkphp Bagaimana untuk menjalankan thinkphp Apr 09, 2024 pm 05:39 PM

    Langkah-langkah untuk menjalankan ThinkPHP Framework secara setempat: Muat turun dan nyahzip ThinkPHP Framework ke direktori tempatan. Buat hos maya (pilihan) yang menunjuk ke direktori akar ThinkPHP. Konfigurasikan parameter sambungan pangkalan data. Mulakan pelayan web. Mulakan aplikasi ThinkPHP. Akses URL aplikasi ThinkPHP dan jalankannya.

    Mana yang lebih baik, laravel atau thinkphp? Mana yang lebih baik, laravel atau thinkphp? Apr 09, 2024 pm 03:18 PM

    Perbandingan prestasi rangka kerja Laravel dan ThinkPHP: ThinkPHP umumnya berprestasi lebih baik daripada Laravel, memfokuskan pada pengoptimuman dan caching. Laravel berfungsi dengan baik, tetapi untuk aplikasi yang kompleks, ThinkPHP mungkin lebih sesuai.

    Bagaimana untuk memasang thinkphp Bagaimana untuk memasang thinkphp Apr 09, 2024 pm 05:42 PM

    Langkah pemasangan ThinkPHP: Sediakan persekitaran PHP, Komposer dan MySQL. Buat projek menggunakan Komposer. Pasang rangka kerja dan kebergantungan ThinkPHP. Konfigurasikan sambungan pangkalan data. Hasilkan kod aplikasi. Lancarkan aplikasi dan lawati http://localhost:8000.

    Bagaimanakah prestasi thinkphp? Bagaimanakah prestasi thinkphp? Apr 09, 2024 pm 05:24 PM

    ThinkPHP ialah rangka kerja PHP berprestasi tinggi dengan kelebihan seperti mekanisme caching, pengoptimuman kod, pemprosesan selari dan pengoptimuman pangkalan data. Ujian prestasi rasmi menunjukkan bahawa ia boleh mengendalikan lebih daripada 10,000 permintaan sesaat, dan digunakan secara meluas dalam tapak web dan sistem perusahaan berskala besar seperti JD.com dan Ctrip dalam aplikasi praktikal.

    Cadangan pembangunan: Cara menggunakan rangka kerja ThinkPHP untuk pembangunan API Cadangan pembangunan: Cara menggunakan rangka kerja ThinkPHP untuk pembangunan API Nov 22, 2023 pm 05:18 PM

    Cadangan pembangunan: Cara menggunakan rangka kerja ThinkPHP untuk pembangunan API Dengan pembangunan berterusan Internet, kepentingan API (Antara Muka Pengaturcaraan Aplikasi) telah menjadi semakin menonjol. API ialah jambatan untuk komunikasi antara aplikasi yang berbeza Ia boleh merealisasikan perkongsian data, panggilan fungsi dan operasi lain, dan menyediakan pembangun kaedah pembangunan yang agak mudah dan pantas. Sebagai rangka kerja pembangunan PHP yang sangat baik, rangka kerja ThinkPHP adalah cekap, berskala dan mudah digunakan.

    Cadangan pembangunan: Cara menggunakan rangka kerja ThinkPHP untuk melaksanakan tugas tak segerak Cadangan pembangunan: Cara menggunakan rangka kerja ThinkPHP untuk melaksanakan tugas tak segerak Nov 22, 2023 pm 12:01 PM

    "Cadangan Pembangunan: Cara Menggunakan Rangka Kerja ThinkPHP untuk Melaksanakan Tugas Asynchronous" Dengan perkembangan pesat teknologi Internet, aplikasi Web mempunyai keperluan yang semakin tinggi untuk mengendalikan sejumlah besar permintaan serentak dan logik perniagaan yang kompleks. Untuk meningkatkan prestasi sistem dan pengalaman pengguna, pembangun sering mempertimbangkan untuk menggunakan tugas tak segerak untuk melaksanakan beberapa operasi yang memakan masa, seperti menghantar e-mel, memproses muat naik fail, menjana laporan, dsb. Dalam bidang PHP, rangka kerja ThinkPHP, sebagai rangka kerja pembangunan yang popular, menyediakan beberapa cara mudah untuk melaksanakan tugas tak segerak.

    See all articles