50 lines
1.8 KiB
PHP
50 lines
1.8 KiB
PHP
|
<?php
|
||
|
/**
|
||
|
* Smarty Internal Plugin Compile Shared Inheritance
|
||
|
* Shared methods for {extends} and {block} tags
|
||
|
*
|
||
|
* @package Smarty
|
||
|
* @subpackage Compiler
|
||
|
* @author Uwe Tews
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* Smarty Internal Plugin Compile Shared Inheritance Class
|
||
|
*
|
||
|
* @package Smarty
|
||
|
* @subpackage Compiler
|
||
|
*/
|
||
|
class Smarty_Internal_Compile_Shared_Inheritance extends Smarty_Internal_CompileBase
|
||
|
{
|
||
|
/**
|
||
|
* Compile inheritance initialization code as prefix
|
||
|
*
|
||
|
* @param \Smarty_Internal_TemplateCompilerBase $compiler
|
||
|
* @param bool|false $initChildSequence if true force child template
|
||
|
*/
|
||
|
public static function postCompile(Smarty_Internal_TemplateCompilerBase $compiler, $initChildSequence = false)
|
||
|
{
|
||
|
$compiler->prefixCompiledCode .= "<?php \$_smarty_tpl->_loadInheritance();\n\$_smarty_tpl->inheritance->init(\$_smarty_tpl, " .
|
||
|
var_export($initChildSequence, true) . ");\n?>\n";
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Register post compile callback to compile inheritance initialization code
|
||
|
*
|
||
|
* @param \Smarty_Internal_TemplateCompilerBase $compiler
|
||
|
* @param bool|false $initChildSequence if true force child template
|
||
|
*/
|
||
|
public function registerInit(Smarty_Internal_TemplateCompilerBase $compiler, $initChildSequence = false)
|
||
|
{
|
||
|
if ($initChildSequence || !isset($compiler->_cache[ 'inheritanceInit' ])) {
|
||
|
$compiler->registerPostCompileCallback(
|
||
|
array('Smarty_Internal_Compile_Shared_Inheritance', 'postCompile'),
|
||
|
array($initChildSequence),
|
||
|
'inheritanceInit',
|
||
|
$initChildSequence
|
||
|
);
|
||
|
$compiler->_cache[ 'inheritanceInit' ] = true;
|
||
|
}
|
||
|
}
|
||
|
}
|