Smarty成員方法:registerDefaultPluginHandler()

2018-12-02 15:47 更新

Name

registerDefaultPluginHandler() — 注冊默認(rèn)插件處理器

說明

void registerDefaultPluginHandler(mixed callback);

注冊一個默認(rèn)的插件處理器,當(dāng)編譯程序無法找到模板中標(biāo)簽定義的時候,將調(diào)用這個處理器進(jìn)行回調(diào)。 參數(shù):

  • callback defines the PHP callback. it can be either:

    • A string containing the function name

    • An array of the form array(&$object, $method) with &$object being a reference to an object and $method being a string containing the method-name

    • An array of the form array($class, $method) with $class being the class name and $method being a method of the class.

當(dāng)Smarty在編譯過程中遇到未定義(沒有注冊的插件或者不在插件目錄下)的標(biāo)簽時,Smarty將試圖調(diào)用默認(rèn)的插件處理器來處理。 如果未定義標(biāo)簽是在循環(huán)中,則該處理器將有可能被多次調(diào)用。

Example 14.38. 默認(rèn)插件處理器例子

<?php

$smarty = new Smarty();
$smarty->registerDefaultPluginHandler('my_plugin_handler');

/**
 * 默認(rèn)插件處理器
 *
 * 當(dāng)Smarty在編譯過程中遇到未定義的標(biāo)簽時調(diào)用
 * 
 * @param string                     $name      未定義標(biāo)簽的名稱
 * @param string                     $type     標(biāo)簽類型 (比如: Smarty::PLUGIN_FUNCTION,Smarty::PLUGIN_BLOCK,
                                               Smarty::PLUGIN_COMPILER,Smarty::PLUGIN_MODIFIER,Smarty::PLUGIN_MODIFIERCOMPILER)
 * @param Smarty_Internal_Template   $template     模板對象
 * @param string                     &$callback    返回 回調(diào)函數(shù)名 
 * @param string                     &$script      當(dāng)回調(diào)函數(shù)是外部的,可返回 函數(shù)所在腳本的路徑。
 * @param bool                       &$cacheable    默認(rèn)true, 如果插件是不可緩存的設(shè)置成false (Smarty >= 3.1.8)
 * @return bool                      成功返回true
 */
function my_plugin_handler ($name, $type, $template, &$callback, &$script, &$cacheable)
{
    switch ($type) {
        case Smarty::PLUGIN_FUNCTION:
            switch ($name) {
                case 'scriptfunction':
                    $script = './scripts/script_function_tag.php';
                    $callback = 'default_script_function_tag';
                    return true;
                case 'localfunction':
                    $callback = 'default_local_function_tag';
                    return true;
                default:
                return false;
            }
        case Smarty::PLUGIN_COMPILER:
            switch ($name) {
                case 'scriptcompilerfunction':
                    $script = './scripts/script_compiler_function_tag.php';
                    $callback = 'default_script_compiler_function_tag';
                    return true;
                default:
                return false;
            }
        case Smarty::PLUGIN_BLOCK:
            switch ($name) {
                case 'scriptblock':
                    $script = './scripts/script_block_tag.php';
                    $callback = 'default_script_block_tag';
                    return true;
                default:
                return false;
            }
        default:
        return false;
    }
 }

?>

溫馨提示

回調(diào)方法必須是靜態(tài)的,如函數(shù)名稱或者一個包含類和方法名的數(shù)組。

不支持如對象方法等動態(tài)的回調(diào)。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號