今天帮助一个朋友解决一个关于smarty问题,当然是临时性的,在这里记录一下(smarty好久没用了,或许我这个方法是太傻瓜,之后有时间在改改)
我朋友的需求要支持以下功能:
$smarty->assign('v', 'hi');
$val = $smarty->fetch('<#--$v-->');
echo $val;
冒似没用过,不管他smarty原本支不支持,改了在说(我是流氓-_-/)
打开Smarty.class.php,在方法 _parse_resource_name 里 加入:
if (strncmp($params['resource_name'],'str://', 6) == 0){
$params['resource_type'] = 'string';
}
原本类型好像只是文件,这里加个字符型,这里用'str://'来判断是不是string
然后在下面一个ID判断里加入:
elseif ($params['resource_type'] == 'string') {
return true;
}
(当然这里可以加些判断或验证进去,为了减省时间我就不管了)
然后定位到方法 _fetch_resource_info
在switch 里加入:
case 'str':
$params['source_content']=substr($params['resource_name'], 6);
$params['resource_timestamp'] = time();
$_return = empty($params['source_content'])?false:true;
break;
OK,按需解决朋友的问题