Gle*_*min 10 php functional-programming
我最近开始使用PHP进行编程,经过与其他语言的长期合作,在此期间我开发了一种更具功能性的风格 - 我希望尝试和维护.
我注意到一些奇怪的行为,我设法将其提炼成一个我希望有人可以解释的测试用例.
$func = function($item) {
if ($item == 0)
throw new Exception("Can't do 0");
return $item;
};
try {
array_map($func, array(1, 2, 3, 0, 5));
} catch (Exception $ex) {
echo "Couldn't map array";
}
Run Code Online (Sandbox Code Playgroud)
执行上面的代码时,我看到以下输出:
警告:array_map():在第10行的map_closure.php中调用map回调时发生错误无法映射数组
我可以用@ on array_map来抑制错误,但这看起来好像很多.
生成警告是因为,简单地说,回调函数没有正常返回(由于抛出异常).array_map()如果回调函数没有完成其执行,这就是编码的方式.记住,就PHP代码而言,Exception会立即中断执行.
至于如何使警告静音,这完全取决于你.不幸的是,会产生警告,你可以选择埋葬或让它显示出来.
顺便说一下,也许你的测试用例过于简化了,但是在那里使用array_filter()(或者可能array_reduce())会更有意义.