我不明白如何从函数返回一个对象.由于对象是通过引用传递和返回的,如果我在函数中创建了一个对象,我希望在函数完成执行后销毁这样的对象.所以这样的返回对象引用应该是指不存在的(被破坏的)对象.但是我在函数中创建的对象已成功返回.怎么会??
class O{
public $ppty = "ppty value";
}
function f1(){
$o1 = new O();
return $o1;
}
var_dump(f1());
**Result:**
object(O)[15]
public 'ppty' => string 'ppty value' (length=10)
Run Code Online (Sandbox Code Playgroud)
变量"保持"对象实际上是持有对象的引用.对象存在于内存中的某个位置,引用该对象的变量只保存内存地址(过于简化).这是参考.当返回该引用或将其传递到某个地方或将其分配给另一个变量时,将生成该引用的副本(意味着复制了内存地址值;例如,您0xDEADBEAF从函数返回值;再次,过度简化).这些引用被视为对象的属性; 只有当引用计数达到0(没有变量持有对象的引用)时,才会收集对象垃圾.
| 归档时间: |
|
| 查看次数: |
55 次 |
| 最近记录: |