Smarty对于未赋值变量的处理?!

这几天一直在精简优化Smarty,去掉了一些几乎不会用到的功能,尽可能提高执行效率。

今天遇到一个问题:对于tpl模板中定义的变量,如果php中未对其赋值,将会出现Notice级别错误;如果使用原版smarty,将不会出现该错误提示。

虽然正式上线后将会error_reporting(0),但是平时开发总不能这样吧,起码smarty之外的notice还是需要看到的。

一直以为对于未赋值的变量,smarty会对其进行类似赋空值等处理,可能是我精简时候去掉了。刚开始原本想着自己把这个功能加上,可是一直没有找到可以添加的地方。直接翻看smarty源码也始终没有发现究竟在哪里实现的该功能。

又重头分析了一下,问题还是应该出现在fetch函数。这一次终于注意到个细节,在fetch函数第一行有一句关于错误报告的设置:

$_smarty_old_error_level = $this->debugging ? error_reporting() : error_reporting(isset($this->error_reporting) ? $this->error_reporting : error_reporting() & ~E_NOTICE); 

原来smarty根本也没有解决这个问题,仍然是通过暂时关闭Notice级别错误报告来解决的。

事情真的是这样的吗,不知Smarty有没有做其他方面的处理,希望达人指正~

你可能感兴趣的:(优化,PHP)