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

Table des matières
前言
舉例說明
鉤子的簡單實(shí)現(xiàn)代碼
鉤子核心類Hook.php:
簡單的插件demo:
插件實(shí)現(xiàn)的地方,即上文的注冊的文件:
入口文件index.php
運(yùn)行接口如下:
Maison cadre php PensezPHP Quel est le mécanisme d'implémentation du hook du plug-in thinkphp??

Quel est le mécanisme d'implémentation du hook du plug-in thinkphp??

May 27, 2023 am 09:07 AM
thinkphp

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

    前言

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

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

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

    {:hooks('documentDetailAfter')}

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

    舉例說明

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

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

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

    作為優(yōu)秀程序員的我們,當(dāng)然不容許我們程序中代碼冗余、混亂的出現(xiàn),于是我們把方法寫成函數(shù)獨(dú)立出來,方便調(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ā)人員就行了,這樣他們不用改變源碼碼就可以輕易的進(jìn)行拓展。

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

    鉤子的簡單實(shí)現(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;;
            }    
        }

    插件實(shí)現(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();

    運(yùn)行接口如下:

    • ????registerBefore

    • ????注冊完成

    • ????registerAfter

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

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Déclaration de ce site Web
    Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefa?on, veuillez contacter admin@php.cn

    Outils d'IA chauds

    Undress AI Tool

    Undress AI Tool

    Images de déshabillage gratuites

    Undresser.AI Undress

    Undresser.AI Undress

    Application basée sur l'IA pour créer des photos de nu réalistes

    AI Clothes Remover

    AI Clothes Remover

    Outil d'IA en ligne pour supprimer les vêtements des photos.

    Clothoff.io

    Clothoff.io

    Dissolvant de vêtements AI

    Video Face Swap

    Video Face Swap

    échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

    Outils chauds

    Bloc-notes++7.3.1

    Bloc-notes++7.3.1

    éditeur de code facile à utiliser et gratuit

    SublimeText3 version chinoise

    SublimeText3 version chinoise

    Version chinoise, très simple à utiliser

    Envoyer Studio 13.0.1

    Envoyer Studio 13.0.1

    Puissant environnement de développement intégré PHP

    Dreamweaver CS6

    Dreamweaver CS6

    Outils de développement Web visuel

    SublimeText3 version Mac

    SublimeText3 version Mac

    Logiciel d'édition de code au niveau de Dieu (SublimeText3)

    Sujets chauds

    Tutoriel PHP
    1502
    276
    Comment exécuter le projet thinkphp Comment exécuter le projet thinkphp Apr 09, 2024 pm 05:33 PM

    Pour exécuter le projet ThinkPHP, vous devez?: installer Composer?; utiliser Composer pour créer le projet?; entrer dans le répertoire du projet et exécuter php bin/console serve?; visiter http://localhost:8000 pour afficher la page d'accueil.

    Il existe plusieurs versions de thinkphp Il existe plusieurs versions de thinkphp Apr 09, 2024 pm 06:09 PM

    ThinkPHP dispose de plusieurs versions con?ues pour différentes versions de PHP. Les versions majeures incluent 3.2, 5.0, 5.1 et 6.0, tandis que les versions mineures sont utilisées pour corriger les bogues et fournir de nouvelles fonctionnalités. La dernière version stable est ThinkPHP 6.0.16. Lorsque vous choisissez une version, tenez compte de la version PHP, des exigences en matière de fonctionnalités et du support de la communauté. Il est recommandé d'utiliser la dernière version stable pour de meilleures performances et une meilleure assistance.

    Comment exécuter thinkphp Comment exécuter thinkphp Apr 09, 2024 pm 05:39 PM

    étapes pour exécuter ThinkPHP Framework localement?: Téléchargez et décompressez ThinkPHP Framework dans un répertoire local. Créez un h?te virtuel (facultatif) pointant vers le répertoire racine ThinkPHP. Configurez les paramètres de connexion à la base de données. Démarrez le serveur Web. Initialisez l'application ThinkPHP. Accédez à l'URL de l'application ThinkPHP et exécutez-la.

    Lequel est le meilleur, Laravel ou thinkphp ? Lequel est le meilleur, Laravel ou thinkphp ? Apr 09, 2024 pm 03:18 PM

    Comparaison des performances des frameworks Laravel et ThinkPHP?: ThinkPHP fonctionne généralement mieux que Laravel, en se concentrant sur l'optimisation et la mise en cache. Laravel fonctionne bien, mais pour les applications complexes, ThinkPHP peut être mieux adapté.

    Comment installer thinkphp Comment installer thinkphp Apr 09, 2024 pm 05:42 PM

    étapes d'installation de ThinkPHP?: Préparez les environnements PHP, Composer et MySQL. Créez des projets à l'aide de Composer. Installez le framework ThinkPHP et ses dépendances. Configurez la connexion à la base de données. Générez le code de l'application. Lancez l'application et visitez http://localhost:8000.

    Quelles sont les performances de thinkphp?? Quelles sont les performances de thinkphp?? Apr 09, 2024 pm 05:24 PM

    ThinkPHP est un framework PHP hautes performances présentant des avantages tels que le mécanisme de mise en cache, l'optimisation du code, le traitement parallèle et l'optimisation des bases de données. Les tests de performances officiels montrent qu'il peut gérer plus de 10 000 requêtes par seconde et qu'il est largement utilisé dans les sites Web à grande échelle et les systèmes d'entreprise tels que JD.com et Ctrip dans les applications réelles.

    Suggestions de développement?: Comment utiliser le framework ThinkPHP pour le développement d'API Suggestions de développement?: Comment utiliser le framework ThinkPHP pour le développement d'API Nov 22, 2023 pm 05:18 PM

    Suggestions de développement?: Comment utiliser le framework ThinkPHP pour le développement d'API Avec le développement continu d'Internet, l'importance de l'API (Application Programming Interface) est devenue de plus en plus importante. L'API est un pont de communication entre différentes applications. Elle peut réaliser le partage de données, l'appel de fonctions et d'autres opérations, et offre aux développeurs une méthode de développement relativement simple et rapide. En tant qu'excellent framework de développement PHP, le framework ThinkPHP est efficace, évolutif et facile à utiliser.

    Suggestions de développement?: Comment utiliser le framework ThinkPHP pour implémenter des taches asynchrones Suggestions de développement?: Comment utiliser le framework ThinkPHP pour implémenter des taches asynchrones Nov 22, 2023 pm 12:01 PM

    "Suggestions de développement?: comment utiliser le framework ThinkPHP pour implémenter des taches asynchrones" Avec le développement rapide de la technologie Internet, les applications Web ont des exigences de plus en plus élevées pour gérer un grand nombre de requêtes simultanées et une logique métier complexe. Afin d'améliorer les performances du système et l'expérience utilisateur, les développeurs envisagent souvent d'utiliser des taches asynchrones pour effectuer certaines opérations chronophages, telles que l'envoi d'e-mails, le traitement des téléchargements de fichiers, la génération de rapports, etc. Dans le domaine de PHP, le framework ThinkPHP, en tant que framework de développement populaire, offre des moyens pratiques d'implémenter des taches asynchrones.

    See all articles