В PHP, если вы создаете массив объектов, копируются ли методы объекта (не члены данных) для каждого экземпляра объекта в массиве или только один раз? Я предположил бы, что по причинам памяти последнее верно; Я просто хотел подтвердить сообществу StackOverflow, что это правда.
Например, предположим, что у меня есть класс MyClass с парой методов, т.е.
class MyClass {
public $data1;
private $data2;
public function MyClass($d1, $d2) {
$this->data1=$d1; $this->data2=$d2;
}
public function method1() { }
public function method2() { }
}
Очевидно, что в действительности method1 () и method2 () не являются пустыми функциями.
Теперь предположим, что я создаю массив этих объектов:
$arr = array();
$arr[0] = & new MyClass(1,2);
$arr[1] = & new MyClass(3,4);
$arr[2] = & new MyClass(5,6);
Таким образом, PHP хранит три набора элементов данных в памяти для каждого из трех экземпляров объекта. Мой вопрос заключается в том, хранит ли PHP также копии method1 () и method2 () (и конструктора) 3 раза для каждого из 3 элементов $ arr? Я пытаюсь решить, будет ли массив из ~ 200 объектов слишком загружен из-за необходимости хранить 200 копий каждого метода в памяти.
Спасибо за ваше время.