preg_replace() 函数中用到的修饰符 /e 在 PHP5.5.x 中已经被弃用了。


preg_replace(): The /e modifier is deprecated, use preg_replace_callback ins...

它提示我们使用 preg_replace_callback 来代替 preg_replace。


return preg_replace("/{([^\}\{\n]*)}/e", "\$this->select('\\1');", $source);

替换为


return preg_replace_callback("/{([^\}\{\n]*)}/", function($r) { return $this->select($r[1]); }, $source);

问题解决。