Мне хотелось бы знать, как я могу клонировать расширенный класс SplHeap, который содержит объекты. Например, если FooHeap расширяет SplHeap, возможно ли, чтобы FooHeap имел метод __clone и клонировал его элементы объекта?Clone SplHeap, содержащий объекты в PHP
class FooHeap extends SplHeap{
public function compare($value1, $value2){.... }
public function __clone(){
// how do I access its elements to clone?
}
}
В качестве альтернативы, если я должен создать новый объект FooHeap и повторно вставить клоны элементов объекта, есть способ (например, сверху вниз или снизу вверх), что я должен повторно -инсталлировать клонированные элементы для обеспечения оптимальной производительности?
Это звучит, как вы хотите глубокую копию кучи (см неглубокой копии, где шапка объектов являются один и тот же в каждой куче). Это правильно? – salathe
да, я хочу глубокую копию кучи. Есть ли способ получить это? – Wee
Я бы, наверное, просто переместил кучу (внутри '__clone()'), временно сохранив клонированные объекты где-нибудь ('SplObjectStorage',' SplFixedArray' и т. Д.). Как только этот первый цикл будет завершен, куча будет пустой, после чего вы можете перебрать временное хранилище и «вставить()» клонированные объекты. – salathe