TemplateHandler에서 치환시 PHP함수나 클래스의 method가 아님에도 무조건 변환을 하여 php syntax 오류가 생기는 것을 수정

git-svn-id: http://xe-core.googlecode.com/svn/sandbox@6299 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
zero 2009-05-07 08:37:32 +00:00
parent 1b4c6c3b6f
commit 57ec3dc213

View file

@ -138,11 +138,29 @@
**/
function _compileVarToContext($matches) {
$str = trim(substr($matches[0],1,strlen($matches[0])-2));
return '<?php print('.preg_replace('/\$([a-zA-Z0-9\_\-\>]+)/i','$__Context->\\1', $str).');?>';
if(!$str) return $matches[0];
if(!in_array(substr($str,0,1),array('(','$'))) {
if(preg_match('/^([^\( \.]+)(\(| \.)/i',$str,$m)) {
$func = trim(strtolower($m[1]));
if(strpos($func,'::')===false) {
if(!function_exists($func)) {
return $matches[0];
}
} else {
list($class, $method) = explode('::',$func);
if(!class_exists($class) || !in_array($method, get_class_methods($class))) {
return $matches[0];
}
}
} else {
if(!defined($str)) return $matches[0];
}
}
return '<?php @print('.preg_replace('/\$([a-zA-Z0-9\_\-\>]+)/i','$__Context->\\1', $str).');?>';
}
/**
* @brief {$와 } 안의 $... 변수를 Context::get(...) 으로 변경
* @brief 이미지의 경로를 변경
**/
function _compileImgPath($matches) {
static $real_path = null;