在php中将变量设置为对象的实例
好吧,我在这里扯头发 我显然错过了一些简单的东西。我试图阻止数据库命中,所以我使用了一个简单的函数来检查内存中是否存在对象的instance,如果存在,则返回实例,如果没有,则从数据库中获取它在php中将变量设置为对象的实例,php,oop,reference,instances,Php,Oop,Reference,Instances,好吧,我在这里扯头发 我显然错过了一些简单的东西。我试图阻止数据库命中,所以我使用了一个简单的函数来检查内存中是否存在对象的instance,如果存在,则返回实例,如果没有,则从数据库中获取它 private function RetrieveFromMemory($Id, $Object) { $mymap=$this->ColumnMap; $key = $this->Key; foreach($this->InMemory as $v) {
private function RetrieveFromMemory($Id, $Object)
{
$mymap=$this->ColumnMap;
$key = $this->Key;
foreach($this->InMemory as $v) {
if($v->$key == $Id) {
/*
foreach (get_object_vars($v) as $key => $value) {
$Object->$key = $value;
}
*/
$Object = $v;
trace('Retrieved '.get_class($v).' from memory');
return true;
}
}
return false;
}
如果我取消对foreach的注释,我可以很好地填充属性,但这是一个新实例。我想要相同的实例,但是使用$Object=$v代码>
不将$Object
设置为与$v
相同的实例。。。它只保留原始的空对象。您返回的是true
,而不是$v
您试图更改函数中参数$object
的值,并希望在函数完成后该更改可见
默认情况下,PHP按值传递参数,因此您需要
更改函数以返回它找到的值,并更改调用它的方式;或
告诉PHP通过引用传递参数:函数RetrieveFromMemory($Id,&$Object)
在我问过你之后我发现。。。供将来参考是一个很好的指南,尽管它没有显示使用函数的示例