Smarty 图标

根据商标通告,你可以使用 Smarty 徽标。

Smarty Template Engine Smarty Template Engine

对于赞助、广告、新闻或其他查询,请联系

使用 Smarty 的网站

广告

名称

registerDefaultPluginHandler() — 注册一个在未定义标签上调用的函数

描述

void registerDefaultPluginHandler(mixed callback);

注册一个默认插件处理程序,假如编译器找不到一个定义的话,它会在其他地方被调用。它使用下列参数

  • callback 定义 PHP 回调。它可以是

    • 包括函数name 的字符串

    • 形式为 array($object, $method) 的数组,其中 $object 引用一个对象,而 $method 包含方法名称的字符串

    • 形式为 array($class, $method) 的数组,其中 $class 是类名,而 $method 是类的方法。

如果 Smarty 编译中遇到内部未定义、已注册或位于插件文件夹中的标签,它会尝试通过调用已注册的默认插件处理程序来解决问题。处理程序可能会被多次调用以针对相同的未定义标签循环遍历有效的插件类型。

示例 14.38 默认插件处理程序示例

<?php

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

/**
 * Default Plugin Handler
 *
 * called when Smarty encounters an undefined tag during compilation
 * 
 * @param string                     $name      name of the undefined tag
 * @param string                     $type     tag type (e.g. Smarty::PLUGIN_FUNCTION, Smarty::PLUGIN_BLOCK, 
                                               Smarty::PLUGIN_COMPILER, Smarty::PLUGIN_MODIFIER, Smarty::PLUGIN_MODIFIERCOMPILER)
 * @param Smarty_Internal_Template   $template     template object
 * @param string                     &$callback    returned function name 
 * @param string                     &$script      optional returned script filepath if function is external
 * @param bool                       &$cacheable    true by default, set to false if plugin is not cachable (Smarty >= 3.1.8)
 * @return bool                      true if successfull
 */
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;
    }
 }

?>

  

注意

返回的回调必须是静态的:一个函数名称或一个包含类名和方法名的数组。

不支持动态回调,比如对象方法。