2014-03-13 138 views
5

我正在擴展MongoCollection類,並且收到此消息。Class :: save()的聲明應該與Class :: save()的聲明兼容

宣言DB \蒙戈\收集::保存()應當與MongoCollection兼容::保存()

我明白,這是正常嬰兒車申報小姐比賽。

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

我得到這個錯誤

嚴格的標準:MyMongoCollection聲明:: save()應該是 兼容MongoCollection :: save($ array_of_fields_OR_object, array $ options = NULL)

所以,我想:

class MyMongoCollection extends MongoCollection { 

    public function save($arr_obj, array $options= null) { 

    } 

} 

和它的作品。

2

不知你是否可以使用得上MongoCollection::save()方法的任何信息ReflectionClass

$reflection = new ReflectionClass('MongoCollection'); 

foreach ($reflection->getMethod('save')->getParameters() as $param) 
{ 
    var_dump($param->getName(), $param->isArray(), $param->isOptional()); 
} 

得到缺少的部分,在該情況下,文件是不是最新的?

ps:這是一個稍微修改的代碼示例,取自this ticket

它看起來像有延長MongoGridFS擴展MongoCollection類的update方法類似的問題:

Issue with overriding MongoCollection::update

+1

非常感謝。結束這個醜陋的界面:https://gist.github.com/clslrns/c64d7c1c3bd5bbc6b012 –

+0

@VitalyChirkov感謝您分享該要點片段。 – birgire

相關問題