<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                * * * * * 鉤子設計與實現 沒有使用鉤子函數的情下, function fun(){ fun1(); fun2(); ... } 執行fun的時候,按照順序執行完所有函數。 使用鉤子,就是為了讓他執行我們需要執行的函數。 創建鉤子: 1.創建鉤子函數前,必須要有很多鉤子函數所需要的函數 比如 計算點擊率 onclink_counter(); 是否檢測登錄is_login(bool $str); 打開驗證窗口等open_chuangkou($condition檢測條件); 等等. 創建掛鉤點 掛鉤點是一個字符串,該字符串必須是鉤子函數列表中的一個函數名稱 $h='body_start' ;//從配置文件中獲得相應的配置信息 創建鉤子函數 function hook($data){ global $h; return $h(); } 鉤子函數根據變量$h(掛鉤點所代表的字符串),去在鉤子函數列表中查找所對應的具體函數,找到則執行或者返回該函數。 鉤子函數設計成類 舉例 is_callable: 驗證變量的內容能否作為函數調用。 這可以檢查包含有效函數名的變量,或者一個數組,包含了正確編碼的對象以及函數名。 下面是wordpress的一個鉤子類,有點復雜 * * * * * `class Hook { //action hooks array private static $actions = array(); /** * ads a function to an action hook * @param $hook * @param $function */ //返回一個掛載數組(數組鍵為掛鉤點,值為一個有效的函數或者方法名稱) public static function add_action($hook,$function) { //將鉤掛點小寫,為了查找方法名稱 $hook=mb_strtolower($hook,CHARSET); //檢查該類中是否存在方法名為hook的方法 if(!self::exists_action($hook)) { //如果方法中沒有掛鉤點方法,則將掛鉤點封裝到數組 //并且給改掛載點數組設為空數組 self::$actions[$hook] = array(); } // 檢測傳遞的方法名稱是否為合法方法名稱 if (is_callable($function)) { //將掛載點數組設為傳遞進來的函數名稱 self::$actions[$hook][] = $function; return TRUE; } return FALSE ; } /** * executes the functions for the given hook * @param string $hook * @param array $params * @return boolean true if a hook was setted */ public static function do_action($hook,$params=NULL) { $hook=mb_strtolower($hook,CHARSET); 檢測是否已經存在了掛載數組 if(isset(self::$actions[$hook])) { 如果存在,則循環這個掛載數組 foreach(self::$actions[$hook] as $function) { if (is_array($params)) { 如果外部傳遞的$params參數是數組, 則將數組傳遞給方法$function,并且將$function函數執行 call_user_func_array($function,$params); } else { 不過不是數組,則將參數一字符的形式傳遞給函數$function,并且讓他自動執行 call_user_func($function); } //cant return anything since we are in a loop! dude! } return TRUE; } return FALSE; } /** * gets the functions for the given hook * @param string $hook * @return mixed */ public static function get_action($hook) { //返回鉤子掛載數組 $hook=mb_strtolower($hook,CHARSET); return (isset(self::$actions[$hook]))? self::$actions[$hook]:FALSE; } /** * check exists the functions for the given hook * @param string $hook * @return boolean */ public static function exists_action($hook) { //檢測是否存在掛載數組 $hook=mb_strtolower($hook,CHARSET); return (isset(self::$actions[$hook]))? TRUE:FALSE; } } /** * Hooks Shortcuts not in class */ function add_action($hook,$function) { //設置為了單例類 return Hook::add_action($hook,$function); } function do_action($hook) { //設置為了單例類 return Hook::do_action($hook); } //添加鉤子 Hook::add_action('unique_name_hook','some_class::hook_test'); //或使用快捷函數添加鉤子: add_action('unique_name_hook','other_class::hello'); add_action('unique_name_hook','some_public_function'); //執行鉤子 do_action('unique_name_hook');//也可以使用 Hook::do_action(); 上面類給鉤子提供了一個基類平臺,讓鉤子去選擇執行函數。 是一套比較完整完善的鉤子類,可以基于tp實現。 * * * * * 其實還可以定義簡單的一個類來實現。 $c=get_class_name(); //獲得類的名字 $m=get_method_name(); //獲得方法的名字 $k=$c->$m(); //執行類的某一個方法 <br /><br /><br /> <hr /> footer: 版權所有:duerhong <hr /> <br /> `
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看