Sono su PHP 5.
gli passo un NUMERO O INDICE...attributes è una COLLECTION.
praticamente sto cercando il modo o il pattern che mi permetta di DEFINIRE un metodo di DEFAULT. esempio:

$Oggetto->Attributes->Item(1)->getValue()

vorrei poterlo scrivere come:

$Oggetto->Attributes->Item(1)

e come

$Oggetto->Attributes(1)

mmm...invece di postare il codice faccio un esempio. mettiamo di avere una classe Principale ed una incapsulata in una proprietà che chiameremo Figlia:
Codice PHP:
class Principale{
   private 
$Figlia;
   function 
__construct(){
      
$this->Figlia = new Figlia("chiave1""valore1");
   }

   function 
Figlia(){
      
$this->Figlia->getValue();
   }

}

class 
Figlia{
   private 
$value// string
   
private $key;

   function 
__construct($k$v){
      
$this->setKey($k);      
      
$this->setValue($v);      
   }

   public function 
getValue(){
      return 
$this->value;
   }
   public function 
getKey(){
      return 
$this->key;
   }
   public function 
setValue($s){
      
$this->value $s;
   }
   public function 
setKey($s){
      
$this->key $s;
   }


sostanzialmente vorrei che scrivendo:
Codice PHP:
$objPrincipale = new Principale;
$str $objPrincipale->Figlia// [->getValue()] 
... mi tornasse di default il valore, per questo ho implementato il metodo Figlia nella classe Principale ma non è la strada giusta perchè se volessi lanciare il metodo setValue lasciando inalterata la sinossi cioè così....

Codice PHP:
$objPrincipale = new Principale;
$str $objPrincipale->Figlia->setValue("valore2"); 
...non funzionerebbe. Secondo me il trucchetto, se esiste, è legato alla visibilità da parte della classe Figlia della classe principale tramite un riferimento ...
es.

Codice PHP:
class Principale{
   private 
$Figlia;
   function 
__construct(){
      
$this->Figlia = new Figlia("chiave1""valore1"$this);
   }
.....................


class 
Figlia{
   private 
$value// string
   
private $key;
   private 
$Container;

   function 
__construct($k$v$objContainer){
      
$this->setKey($k);      
      
$this->setValue($v);      
      
$this->Container $objContainer;
   }
.... ...... ...... 
oppure potrei rendere pubblica la visibilità della proprietà Figlia ma vorrei evitarlo a meno che non esista un modo per rendere le proprietà di una classe pubbliche ma in sola lettura (creazione metodi a parte naturalmente).
mah!