我正在扩展MongoCollection类,我收到了这条消息。
Db \ Mongo \ Collection :: save()的声明应该与MongoCollection :: save()的声明兼容
据我所知,这通常是一个婴儿车宣言未命中。
Php.net说婴儿车是:
public mixed save(array | object $ a [,array $ options = array()])
我已尝试以下所有方法来解决此问题:
public function save(array &$a, array $options = array())
public function save($a, array $options = array())
public function save(&$a, array $options = array())
public function save($a, $options = array())
public function save($a = array(), $options = array())
还有很多其他人,我似乎无法匹配这种类型。
有没有人对如何修复此错误有任何想法?你如何将一个婴儿车声明为数组对象?
答案 0 :(得分:3)
我想知道您是否可以使用ReflectionClass
获取有关MongoCollection::save()
方法的任何信息:
$reflection = new ReflectionClass( 'MongoCollection' );
foreach ( $reflection->getMethod('save')->getParameters() as $param )
{
var_dump( $param->getName(), $param->isArray(), $param->isOptional() );
}
获取缺失的部分,如果文档不是最新的?
ps:这是一个略微修改的代码示例,取自this ticket。
update
类MongoGridFS
扩展的MongoCollection
方法似乎存在类似的问题:
答案 1 :(得分:3)
我收到了这个错误
严格标准:MyMongoCollection :: save()的声明应该是 兼容MongoCollection :: save($ array_of_fields_OR_object, array $ options = NULL)
所以我试过了:
class MyMongoCollection extends MongoCollection {
public function save($arr_obj, array $options= null) {
}
}
它有效。