mirror of
https://github.com/smarty-php/smarty.git
synced 2025-08-04 18:34:27 +02:00
- move some code from parser into compiler
This commit is contained in:
@@ -1,4 +1,7 @@
|
||||
===== 3.1.30-dev ===== (xx.xx.xx)
|
||||
09.02.2016
|
||||
- move some code from parser into compiler
|
||||
|
||||
05.02.2016
|
||||
- improvement internal compiler changes
|
||||
|
||||
|
@@ -39,13 +39,6 @@ class Smarty_Internal_Templateparser
|
||||
*/
|
||||
public $retvalue = 0;
|
||||
|
||||
/**
|
||||
* counter for prefix code
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public static $prefix_number = 0;
|
||||
|
||||
/**
|
||||
* @var
|
||||
*/
|
||||
@@ -811,21 +804,21 @@ value(res) ::= doublequoted_with_quotes(s). {
|
||||
|
||||
|
||||
value(res) ::= varindexed(vi) DOUBLECOLON static_class_access(r). {
|
||||
self::$prefix_number++;
|
||||
$prefixVar = $this->compiler->getNewPrefixVariable();
|
||||
if (vi['var'] == '\'smarty\'') {
|
||||
$this->compiler->prefix_code[] = '<?php $_tmp'.self::$prefix_number.' = '. $this->compiler->compileTag('private_special_variable',array(),vi['smarty_internal_index']).';?>';
|
||||
$this->compiler->appendPrefixCode("<?php $prefixVar" .' = '. $this->compiler->compileTag('private_special_variable',array(),vi['smarty_internal_index']).';?>');
|
||||
} else {
|
||||
$this->compiler->prefix_code[] = '<?php $_tmp'.self::$prefix_number.' = '. $this->compiler->compileVariable(vi['var']).vi['smarty_internal_index'].';?>';
|
||||
$this->compiler->appendPrefixCode("<?php $prefixVar" .' = '. $this->compiler->compileVariable(vi['var']).vi['smarty_internal_index'].';?>');
|
||||
}
|
||||
res = '$_tmp'.self::$prefix_number.'::'.r[0].r[1];
|
||||
res = $prefixVar .'::'.r[0].r[1];
|
||||
}
|
||||
|
||||
// Smarty tag
|
||||
value(res) ::= smartytag(st). {
|
||||
self::$prefix_number++;
|
||||
$prefixVar = $this->compiler->getNewPrefixVariable();
|
||||
$tmp = $this->compiler->appendCode('<?php ob_start();?>', st);
|
||||
$this->compiler->prefix_code[] = $this->compiler->appendCode($tmp, '<?php $_tmp'.self::$prefix_number.'=ob_get_clean();?>');
|
||||
res = '$_tmp'.self::$prefix_number;
|
||||
$this->compiler->appendPrefixCode($this->compiler->appendCode($tmp, "<?php $prefixVar" .'=ob_get_clean();?>'));
|
||||
res = $prefixVar;
|
||||
}
|
||||
|
||||
value(res) ::= value(v) modifierlist(l). {
|
||||
@@ -1099,9 +1092,9 @@ function(res) ::= ns1(f) OPENP params(p) CLOSEP. {
|
||||
}
|
||||
$par = implode(',',p);
|
||||
if (strncasecmp($par,'$_smarty_tpl->smarty->ext->_config->_getConfigVariable',strlen('$_smarty_tpl->smarty->ext->_config->_getConfigVariable')) === 0) {
|
||||
self::$prefix_number++;
|
||||
$this->compiler->prefix_code[] = '<?php $_tmp'.self::$prefix_number.'='.str_replace(')',', false)',$par).';?>';
|
||||
$isset_par = '$_tmp'.self::$prefix_number;
|
||||
$prefixVar = $this->compiler->getNewPrefixVariable();
|
||||
$this->compiler->appendPrefixCode("<?php $prefixVar" .'='.str_replace(')',', false)',$par).';?>');
|
||||
$isset_par = $prefixVar;
|
||||
} else {
|
||||
$isset_par=str_replace("')->value","',null,true,false)->value",$par);
|
||||
}
|
||||
@@ -1139,9 +1132,9 @@ method(res) ::= DOLLARID(f) OPENP params(p) CLOSEP. {
|
||||
if ($this->security) {
|
||||
$this->compiler->trigger_template_error (self::Err2);
|
||||
}
|
||||
self::$prefix_number++;
|
||||
$this->compiler->prefix_code[] = '<?php $_tmp'.self::$prefix_number.'='.$this->compiler->compileVariable('\''.substr(f,1).'\'').';?>';
|
||||
res = '$_tmp'.self::$prefix_number.'('. implode(',',p) .')';
|
||||
$prefixVar = $this->compiler->getNewPrefixVariable();
|
||||
$this->compiler->appendPrefixCode("<?php $prefixVar" .'='.$this->compiler->compileVariable('\''.substr(f,1).'\'').';?>');
|
||||
res = $prefixVar .'('. implode(',',p) .')';
|
||||
}
|
||||
|
||||
// function/method parameter
|
||||
|
@@ -121,7 +121,7 @@ class Smarty extends Smarty_Internal_TemplateBase
|
||||
/**
|
||||
* smarty version
|
||||
*/
|
||||
const SMARTY_VERSION = '3.1.30-dev/29';
|
||||
const SMARTY_VERSION = '3.1.30-dev/30';
|
||||
|
||||
/**
|
||||
* define variable scopes
|
||||
|
@@ -289,6 +289,13 @@ abstract class Smarty_Internal_TemplateCompilerBase
|
||||
*/
|
||||
public $_cache = array();
|
||||
|
||||
/**
|
||||
* counter for prefix variable number
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
public static $prefixVariableNumber = 0;
|
||||
|
||||
/**
|
||||
* method to compile a Smarty template
|
||||
*
|
||||
@@ -1250,4 +1257,34 @@ abstract class Smarty_Internal_TemplateCompilerBase
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get new prefix variable name
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getNewPrefixVariable()
|
||||
{
|
||||
self::$prefixVariableNumber ++;
|
||||
return $this->getPrefixVariable();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get current prefix variable name
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getPrefixVariable()
|
||||
{
|
||||
return '$_prefixVariable' . self::$prefixVariableNumber;
|
||||
}
|
||||
|
||||
/**
|
||||
* append code to prefix buffer
|
||||
*
|
||||
* @param string $code
|
||||
*/
|
||||
public function appendPrefixCode($code)
|
||||
{
|
||||
$this->prefix_code[] = $code;
|
||||
}
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user