只有变量可以通过引用传递
我有一个好主意,使用一个自定义的错误处理程序,把我带到了一个兔子洞。
以下代码给出(带或不带自定义错误处理程序):致命错误:只能通过引用传递变量
function foo(){
$b=array_pop(array("a","b","c"));
return $b;
}
print_r(foo());
以下代码给出(仅使用自定义错误处理程序):(2048) 仅应通过引用传递变量
function foo(){
$a=explode( '/' , 'a/b/c');
$c=array_pop(array_slice($a,-2,1));
return $c;
}
print_r(foo());
第二个让我担心,因为我有很多“紧凑”代码。因此,我要么放弃使用自定义错误处理程序(以改进我的日志记录模块)的聪明想法,要么扩展我的所有代码。
有人有更好的想法吗?另外,WTF?
更新:
多亏了这些答案,我学到了一些关于php如何处理错误的知识。E_ALL不包括E_STRICT(php 5)的混淆并不酷。
最重要的是,创建自己的自定义错误处理程序可以默认E_STRICT,这就是问题开始的地方。
这个故事的寓意是使用你自己的错误处理程序来捕获它们,并使用错误常量(E_STRICT,E_USER_WARNING,E_USER_ERROR等)进行过滤。
至于变量引用和某些函数的“内存损坏问题”,我能说什么呢?加倍不酷。我会(这并不意味着你应该)忽略我的错误处理程序中的E_STRICT,生活还在继续。