Ciao,
ho un dubio su come invocare un metodo ricorsivo dentro il costruttore (vabbè non c'entra molto dove lo invoco in realtà...)

Ho una classe che ha 2 variabili di istanza di cui la prima è un array chiamato heap mentre la seconda conterrà il numero di elementi presenti nell'array heap.

Eccovi la porzione di codice relativa alla definizione delle variabili di istanza ed al costruttore che le inizializza:

codice:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

/* Classe che implementa la struttura dati HEAP e la sua funzionalità per
   l'ordinamento di una collezione mediante l'algoritmo di ordinamento
   Heap Sort */

 class Heap{
 	
 	/* Variabile di istanza che implementa la struttura dati ad albero dell'heap per mezzo di 
	   un array */
 	private $heap = array();
 	private $heapSize;			// Variabile di istanza che conterrà la dimensione dell'heap
 	
 	/* COSTRUTTORE: Copia l'array parametro nella variabile di istanza heap e mette dentro
	   la variabile di istanza heapSize la sua dimensione */
    
    public function __construct($arr){
    	
    	for($i=0; $i<count($arr); $i++)
    		$this->heap[$i+1] = $arr[$i];
    		
   		$this->heapSize = count($this->heap);// Mette dentro heapSize la dimensione dell'array parametro
   		echo "Heap inizializzato con i valori dell'array parametro, contenuto heap: ";
   		print_r($this->heap);
   		
   		/* Invoca il metodo heapify() sull'array heap partendo dalla prima posizione che sarà così                      trasformato in un HEAP a tutti gli effeti */
   	//	$this->heap = $this->heapify($this->heap, 1);
   		echo "Dopo l'invocazione di heapify() il contenuto dell'heap è:  ";
   		print_r($this->heap);
	}
Non fate caso ai print_r() che sono stati inseriti solo come test...

Il dubbio mi viene sull'invocazione del metodo ricorsivo heapify().
Praticamente io ho la variabile (che è un array) di istanza heap, tale array deve essere modificato e trasformato in una forma particolare. Il metodo heapify() è un metodo che trasforma tale array iniziale in modo ricorsivo a partire da un certo indice (il secondo parametro) in tale specifica forma.

Tralasciando come heapify() trasformi l'aray...mi sorge il dubbio...l'invocazione fatta così:
$this->heap = $this->heapify($this->heap, 1);
che mette dentro heap il valore restituito da heapify (che dovrebbe essere l'aray riarrangiato) va bene o no...a rivederla non mi sembra corretta...alla fine heapify() non deve restituire nulla...deve modificare l'array heap...

Quindi forse nopn è meglio invocarla così:
codice:
$this->heapify(1)
e fare in modo che non restituisca nulla ma modifiche l'array $heap dell'oggetto in questione?

Grazie
Andrea