Replace direct access to inheritance property on Template object by proper getter.

This commit is contained in:
Simon Wisselink
2023-01-12 10:11:10 +01:00
parent 536721d457
commit 541f0821f0
7 changed files with 15 additions and 25 deletions

View File

@@ -84,9 +84,9 @@ class BlockClose extends Inheritance {
$compiler->parser->current_buffer = $_buffer; $compiler->parser->current_buffer = $_buffer;
$output = "<?php \n"; $output = "<?php \n";
if ($compiler->_cache['blockNesting'] === 1) { if ($compiler->_cache['blockNesting'] === 1) {
$output .= "\$_smarty_tpl->inheritance->instanceBlock(\$_smarty_tpl, '$_className', $_name);\n"; $output .= "\$_smarty_tpl->getInheritance()->instanceBlock(\$_smarty_tpl, '$_className', $_name);\n";
} else { } else {
$output .= "\$_smarty_tpl->inheritance->instanceBlock(\$_smarty_tpl, '$_className', $_name, \$this->tplIndex);\n"; $output .= "\$_smarty_tpl->getInheritance()->instanceBlock(\$_smarty_tpl, '$_className', $_name, \$this->tplIndex);\n";
} }
$output .= "?>\n"; $output .= "?>\n";
--$compiler->_cache['blockNesting']; --$compiler->_cache['blockNesting'];

View File

@@ -71,7 +71,7 @@ class Child extends Base {
if (isset($_assign)) { if (isset($_assign)) {
$output .= "ob_start();\n"; $output .= "ob_start();\n";
} }
$output .= '$_smarty_tpl->inheritance->call' . $this->blockType . '($_smarty_tpl, $this' . $output .= '$_smarty_tpl->getInheritance()->call' . $this->blockType . '($_smarty_tpl, $this' .
($this->blockType === 'Child' ? '' : ", {$tag}") . ");\n"; ($this->blockType === 'Child' ? '' : ", {$tag}") . ");\n";
if (isset($_assign)) { if (isset($_assign)) {
$output .= "\$_smarty_tpl->assign({$_assign}, ob_get_clean());\n"; $output .= "\$_smarty_tpl->assign({$_assign}, ob_get_clean());\n";

View File

@@ -109,7 +109,7 @@ class ExtendsTag extends Inheritance {
} }
$compiler->parser->template_postfix[] = new \Smarty\ParseTree\Tag( $compiler->parser->template_postfix[] = new \Smarty\ParseTree\Tag(
$compiler->parser, $compiler->parser,
'<?php $_smarty_tpl->inheritance->endChild($_smarty_tpl' . '<?php $_smarty_tpl->getInheritance()->endChild($_smarty_tpl' .
(isset($template) ? (isset($template) ?
", {$template}{$inlineUids}" : ", {$template}{$inlineUids}" :
'') . ");\n?>" '') . ");\n?>"

View File

@@ -287,9 +287,6 @@ class IncludeTag extends Base {
$uid = $tpl->source->type . $tpl->source->uid; $uid = $tpl->source->type . $tpl->source->uid;
if ($tpl->source->exists) { if ($tpl->source->exists) {
$compiler->parent_compiler->mergedSubTemplatesData[$uid][$t_hash]['uid'] = $tpl->source->uid; $compiler->parent_compiler->mergedSubTemplatesData[$uid][$t_hash]['uid'] = $tpl->source->uid;
if (isset($compiler->template->inheritance)) {
$tpl->inheritance = clone $compiler->template->inheritance;
}
$tpl->compiled = new Compiled(); $tpl->compiled = new Compiled();
$tpl->compiled->nocache_hash = $compiler->parent_compiler->template->compiled->nocache_hash; $tpl->compiled->nocache_hash = $compiler->parent_compiler->template->compiled->nocache_hash;
$tpl->loadCompiler(); $tpl->loadCompiler();

View File

@@ -29,7 +29,7 @@ abstract class Inheritance extends Base
*/ */
public static function postCompile(\Smarty\Compiler\Template $compiler, $initChildSequence = false) public static function postCompile(\Smarty\Compiler\Template $compiler, $initChildSequence = false)
{ {
$compiler->prefixCompiledCode .= "<?php \$_smarty_tpl->_loadInheritance();\n\$_smarty_tpl->inheritance->init(\$_smarty_tpl, " . $compiler->prefixCompiledCode .= "<?php \$_smarty_tpl->getInheritance()->init(\$_smarty_tpl, " .
var_export($initChildSequence, true) . ");\n?>\n"; var_export($initChildSequence, true) . ");\n?>\n";
} }

View File

@@ -71,8 +71,7 @@ class InheritanceRuntime {
public function init(Template $tpl, $initChild, $blockNames = []) { public function init(Template $tpl, $initChild, $blockNames = []) {
// if called while executing parent template it must be a sub-template with new inheritance root // if called while executing parent template it must be a sub-template with new inheritance root
if ($initChild && $this->state === 3 && (strpos($tpl->template_resource, 'extendsall') === false)) { if ($initChild && $this->state === 3 && (strpos($tpl->template_resource, 'extendsall') === false)) {
$tpl->inheritance = new InheritanceRuntime(); $tpl->getInheritance()->init($tpl, $initChild, $blockNames);
$tpl->inheritance->init($tpl, $initChild, $blockNames);
return; return;
} }
++$this->tplIndex; ++$this->tplIndex;
@@ -227,7 +226,8 @@ class InheritanceRuntime {
if (isset($block->parent)) { if (isset($block->parent)) {
$this->callBlock($block->parent, $tpl); $this->callBlock($block->parent, $tpl);
} else { } else {
throw new Exception("inheritance: illegal '{$tag}' used in child template '{$tpl->inheritance->sources[$block->tplIndex]->filepath}' block '{$block->name}'"); throw new Exception("inheritance: illegal '{$tag}' used in child template '" .
"{$tpl->getInheritance()->sources[$block->tplIndex]->filepath}' block '{$block->name}'");
} }
} }

View File

@@ -33,13 +33,6 @@ class Template extends TemplateBase {
*/ */
public $source = null; public $source = null;
/**
* Inheritance runtime extension
*
* @var InheritanceRuntime
*/
public $inheritance = null;
/** /**
* Template resource * Template resource
* *
@@ -479,21 +472,21 @@ class Template extends TemplateBase {
} }
/** /**
* Load inheritance object * Helper function for InheritanceRuntime object
*
* @return InheritanceRuntime
* @throws Exception
*/ */
public function _loadInheritance() { public function getInheritance(): InheritanceRuntime {
if (!isset($this->inheritance)) { return $this->_getSmartyObj()->getRuntime('Inheritance');
$this->inheritance = new InheritanceRuntime();
}
} }
/** /**
* Unload inheritance object * Unload event callbacks
*/ */
private function _cleanUp() { private function _cleanUp() {
$this->startRenderCallbacks = []; $this->startRenderCallbacks = [];
$this->endRenderCallbacks = []; $this->endRenderCallbacks = [];
$this->inheritance = null;
} }
/** /**