Ho aggiornato la classe in questo modo prima di leggere il post

Codice PHP:
class AbstrCategories
     
{
        function 
AbstrCategories()
                {
                   
// Array che conterrà l'albero
                   
$this->categories = array();
                } 
// END Categories
        
        
function output()
                {
                   while (list(
$name$id) = each ($this->_tree()))
                        {
                           echo 
$name ' [' $id ']
'
;
                        }
                }
        
        
///// METODI PRIVATI /////
        
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);
                           
// Ricorsione
                           
$this->_tree ($this->row['id'],$name,$level+1);
                        }
                   return 
$this->categories;        
                } 
// END function tree
                
        
function _buildCategoryName($id $name $level)
                {
                   
$name str_repeat("",$level) . $this->row['name'] .  "\n";
                   
$this->categories["$name"] = $this->row['id'];
                } 
// END function _buildCategoryName
     

Codice PHP:
class CategoriesOption extends AbstrCategories
     
{
        function 
CategoriesOption()
                {
                   
parent::AbstrCategories();
                } 
// END Categories
        
        
function output()
                {
                   while (list(
$name$id) = each ($this->_tree()))
                        {
                           echo 
'<option value="' $id '">' $name '</option>';
                        }
                }
     } 
Credi che debba definire prima una classe generale ma onestamente questa è la prima classe che faccio e quindi non sono ancora molto pratico. Secondo te come potrei migliorarla?