概括
我正在尝试找到一种方法将引用的变量向上更改两个级别,同时避免Deprecated: Call-time pass-by-reference has been deprecated
我做过的研究
我已经浏览了这个和这个,似乎call_user_func_array
可以使警告静音,但我认为我错过了一些东西。
问题
我将 MongoDB 与 PHP 一起使用,以下方法属于一个模型,并在保存之前简单地检查通过引用传递给它的输入的架构。
// $this->collection is the MongoCollection object
public function save(&$entry) {
if( empty($entry) ) return false;
if( !$this->checkSchema($entry) ) $this->throwDbError('Schema violation in `' . get_class($this) . '`');
try { return $this->collection->save(&$entry); } // <---- want to avoid using &
catch (Exception $e) { return $this->throwDbError($e); }
}
MongoCollection::save ($this->collection->save)
将使用新的文档 ID附加该_id
字段。但是,除非我通过引用传递调用时间,否则$entry
此更改不会反映在$entry
传递给上述方法的内容上。(本质上我希望能够向上修改两个级别)MongoCollection::save
$entry
好吧,这是我解释问题的最佳方法,如果您需要澄清,请告诉我。