Объявление класса::сохранить() должно быть совместимо с объявлением класса::сохранить()
Я расширяю класс MongoCollection и получаю это сообщение.
Объявление Db\Mongo\Collection::save() должно быть совместимо с объявлением MongoCollection::save()
Я понимаю, что обычно это объявление о пропуске матча в детской коляске.
Php.net говорит, что коляски такие:
Публичное смешанное сохранение (массив|объект $a [, параметры массива $=массив()])
Я попробовал все следующее, чтобы исправить это проблема:
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())
И многие другие, и я, похоже, не могу соответствовать этому типу.
Есть ли у кого-нибудь идеи о том, как исправить эту ошибку? Как объявить детскую коляску как массив|объект?
2 answers
Я получил эту ошибку
Строгие стандарты: Объявление mymongocollection::save() должно быть совместимо с MongoCollection::save($array_of_fields_or_object, массив $options=NULL)
Поэтому я попробовал:
class MyMongoCollection extends MongoCollection {
public function save($arr_obj, array $options= null) {
}
}
И это работает.
Интересно, можете ли вы получить какую-либо информацию о методе MongoCollection::save()
, используя ReflectionClass
:
$reflection = new ReflectionClass( 'MongoCollection' );
foreach ( $reflection->getMethod('save')->getParameters() as $param )
{
var_dump( $param->getName(), $param->isArray(), $param->isOptional() );
}
Чтобы получить недостающие части, в случае, если документация не обновлена?
Ps: это слегка измененный пример кода, взятый из этого билета.
Похоже, что существуют аналогичные проблемы с расширением update
метода MongoGridFS
расширения класса MongoCollection
: