<?php

class XenForo_Template_Compiler_Tag_Title implements XenForo_Template_Compiler_Tag_Interface
{

    public function compile(XenForo_Template_Compiler $compiler, $tag, array $attributes, array $children, array $options)
    {
        if (empty($options['allowRawStatements']))
        {
            throw $compiler->getNewCompilerException(new XenForo_Phrase('x_tags_only_used_where_full_statements_allowed', array('tag' => 'title')));
        }

        $var = '__extraData[\'title\']';
        $childOutput = $compiler->compileIntoVariable($children, $var, $options, false);

        return $compiler->getNewRawStatement($childOutput);
    }
}

以上代码取自library\xenforo\template\compiler\tag\title.php。我想了解它是如何工作的。例如,<xen:title>Page Title</xen:title>,那么什么是$compiler$tag$attributes$children$options,?

最佳答案

我会让xenforo/template/compiler自己说话:

/**
* Compile a tag segment. Mostly handled by the specified tag handler.
*
* @param string Tag found
* @param array  Attributes (key: name, value: value)
* @param array  Any nodes (text, var, tag) that are within this tag
* @param array  Options
*/

至于选项:
/**
 * Default options for compilation. These will be used if individual handles do not
 * override them. Handlers may override all of them or individual ones.
 *
 * @var array
 */

10-04 21:59
查看更多