对 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)时会报错。