Ho modificato il tutto in questo modo:
Codice PHP:
class AbstrCategories
     
{
        function 
AbstrCategories()
                {
                   
$this->categories = array();
                } 
// END Categories
        
        
function tree($id $name '' $level 0)
                {
                   
$query "SELECT id , name , parent FROM categories WHERE parent = $id ORDER BY name";
                   
$result mysql_query($query);
                   while (
$this->row mysql_fetch_array($result))
                        {
                           
$this->_buildCategoryName($id $name $level);
                           
$this->tree($this->row['id'],$name,$level+1);
                        }
                   return 
$this->categories;
                } 
// END function tree
     

Codice PHP:
class TreeCategories extends AbstrCategories
     
{
        function 
TreeCategories()
                {
                   
parent::AbstrCategories();
                } 
// END Categories
        
        
function tree($id $name '' $level 0)
                {
                   
parent::tree();
                } 
// END function tree
                
        
function _buildCategoryName($id $name $level)
                {
                   
$name str_repeat("",$level) . $this->row['name'] .  "\n";
                   
$this->categories["$name"] = $this->row['id'];
                }
     } 
Mi dice che il documento non contiene dati.
Incomma, la prima classe che ho postato funziona perfettamente. Però ora dovrei modificare il metodo. Come faccio? Nessuno Lo sa? Come è possibile!