如果我通过引用将变量或对象传递给函数调用,我会想象它避免在内存中创建第二个对象,从而保留资源?例如:
<?php
class CoolObject
{
// Have some properties here
public function __construct()
{
// Do some stuff
}
public function test()
{
echo("Test");
}
}
function doSomething(&$param)
{
// Calls original instance, still only one object in memory
$param->test();
// Does this create a second instance in memory, or just assign
// the reference?
$newObj = $param;
}
// Create 1st instance of object in memory
$myObj = new CoolObject;
// Do a test to determine number of instances created
doSomething($myObj);
?>
Run Code Online (Sandbox Code Playgroud)
当我将"by reference"变量分配给$ newObj时,它是否在内存中创建了一个新的数据,将计数最多为2,或者只是传递了引用仍然只留下一个对象?
如果您通过引用传递变量,那么您是正确的,因为它不会复制该对象。相反,它复制指向该对象的指针。因此,虽然它使用了一些内存,但内存量仅等于指针的大小。
当您创建另一个指向同一对象的变量时,您将再次复制指针,其结果与上面相同。
就引用计数和对象而言,每次复制指针时,引用计数器都会递增。
只有当引用计数为零时,对象才会被释放。
| 归档时间: |
|
| 查看次数: |
267 次 |
| 最近记录: |