2010-09-28 10 views
12

Come si imposta il completamento del codice per funzionare su Zend Studio (o qualsiasi IDE basato su Eclipse) quando si lavora con una classe che ha variabili membro private o protette SENZA ricorrere a un gruppo di Getter's OR che imposta i membri vars come pubblici.Codice Completamento per variabili membro private/protette quando si utilizza magic __get()

Ad esempio:

class Dog { 

    protected $bark = 'woof!'; 

    public function __get($key) { 
     if (isset($this->$key)) { 
      return $this->$key; 
     } 
    } 

} 

$Dog = new Dog(); 
echo $Dog->bark; // <-- I want the IDE to "know" that bark is a property of Dog. 

risposta

24

codici di completamento per metodi di magia può essere ottenuto utilizzando l'annotazione @property e @method nel DocBlock della classe (non nel metodo Docs).

/** 
* @property string bark 
*/ 
class Dog { 
    /* ... */ 
} 

$Dog = new Dog(); 
echo $Dog-> // will autocomplete now 

Si noti che non esiste alcuna correlazione tra il codice effettivo e l'annotazione. Zend Studio mostrerà tutto ciò che hai impostato per @property, indipendentemente da questa proprietà esistente. Inoltre, non controllerà se esiste effettivamente un metodo magico disponibile.

Code Completion in Zend Studio with @property annotation

+0

Funziona anche con Eclipse? –

+1

@Matthieu dovrebbe funzionare anche con Eclipse. Ma non inchiodarmi su quello. – Gordon

+2

Solo confermando questo funziona anche su Netbeans 7.2 – qrazi

Problemi correlati