// require_once PHPTAL_DIR.'PHPTAL/Php/Tales.php'; /** * @package phptal.php */ class PHPTAL_Php_State { public function __construct() { $this->_debug = false; $this->_talesMode = 'tales'; $this->_encoding = 'UTF-8'; $this->_outputMode = ''; } public function setDebug($bool) { $old = $this->_debug; $this->_debug = $bool; return $old; } public function isDebugOn() { return $this->_debug; } public function setTalesMode($mode) { $old = $this->_talesMode; $this->_talesMode = $mode; return $old; } public function getTalesMode() { return $this->_talesMode; } public function setEncoding($enc) { $this->_encoding = $enc; } public function getEncoding() { return $this->_encoding; } public function setOutputMode($mode) { $this->_outputMode = $mode; } public function getOutputMode() { return $this->_outputMode; } public function evalTalesExpression($expression) { if ($this->_talesMode == 'php') return PHPTAL_TalesInternal::php($expression); return phptal_tales($expression); } public function interpolateTalesVarsInString($string) { if ($this->_talesMode == 'tales'){ return PHPTAL_TalesInternal::string($string); } // replace ${var} found in expression while (preg_match('/(?_encoding); $string = str_replace($ori, $repl, $string); } $string = str_replace('$${', '${', $string); return '\''.$string.'\''; } private function _interpolateTalesVarsStructure($matches) { return ''; } private function _interpolateTalesVarsEscaped($matches) { return '_encoding.'\');?>'; } public function interpolateTalesVarsInHtml($src) { if ($this->_talesMode == 'tales'){ $result = preg_replace_callback('/(?'; } else { $repl = 'htmlchars($php).'; ?>'; } $src = str_replace($ori, $repl, $src); } return str_replace('$${','${', $src); } public function htmlchars($php) { return 'phptal_escape('.$php.', ENT_QUOTES, \''.$this->_encoding.'\')'; } private $_debug; private $_talesMode; private $_encoding; private $_outputMode; } ?>