2012-03-13 20 views
6

Ho una classe e ha alcuni metodi statici, alcuni non statici. Ha una proprietà statica. Sto cercando di accedere a quella proprietà all'interno di tutti i suoi metodi, non riesco a capire la sintassi corretta.Accedere alla proprietà statica tramite metodi statici e non statici?

Quello che ho è questa:

class myClass { 
    static public $mode = 'write'; 
    static public function getMode() { 
     return myClass::$mode; 
    } 
    public function getThisMode() { 
     return $this->mode; 
    } 
} 

qualcuno può dirmi la sintassi reale per questo?

risposta

16

Per le proprietà statiche usa la seguente anche all'interno di una funzione non statica

return self::$mode; 

La ragione di questo è perché esiste la proprietà statica se un oggetto è creato un'istanza o meno. Pertanto stiamo semplicemente usando la stessa proprietà preesistente.

+1

Yep, che ha funzionato. Grazie. Sono un po 'curioso di sapere perché className :: $ mode non funziona, però? Accetterò la tua domanda non appena me lo consentirà. – DanRedux

+0

@DanRedux Cheers. Sei sicuro che la tua prima funzione non restituisca nulla? – yehuda

+0

@DanRedux ha appena controllato il codice ed entrambi funzionano bene con il mio cambio di sé. usare myClass va bene anche a me. – yehuda

3

Se sei fuori dalla classe, assicurati di non dimenticare lo $ o vedrai questo errore. Ad esempio, assicurarsi di chiamare in questo modo:

$myClass = new myClass(); 

echo $myClass::$mode; 

non come questo:

echo $myClass::mode; 
+0

Ah! Funziona sicuramente meglio così. –