对 brcontainer 的 polyfill 进行了一些小的修正,这以非阻塞的方式防止了非对象上的错误,并且还修正了条件检查“file_exists”而不是正确的“function_exists”的问题。
if ( !function_exists( 'is_iterable' ) )
{
function is_iterable( $obj )
{
return is_array( $obj ) || ( is_object( $obj ) && ( $obj instanceof \Traversable ) );
}
}
最初的答案无法正确解决,因为它正在查找文件而不是函数,并且如果给定非可迭代的非对象值(例如 false),则提供的方法会出错。