示例:
<?php
class MyClass {
private $data = array(// large amount of data);
public function getData() {
return $this->data;
}
}
class MyOtherClass {
private $var;
public function __construct($other_class_instance) {
$this->var = $other_class_instance;
}
}
$my_class = new MyClass();
$other_class_1 = new MyOtherClass($my_class);
$other_class_2 = new MyOtherClass($my_class);
上面的代码将是MyClass->数据的〜3倍还是仅是1x,因为它是通过引用传递的?
不会为$my_class
实例分配新的内存。
MyOtherClass::$var
不保存$my_class
的独立存储器表示,而只是保存对象标识符引用。
因此每个new MyOtherClass($my_class);
只会添加字节以将特定实例存储在内存中,而不会为$my_class
的副本添加额外的内存。