2012-03-13 13 views
6

Tengo una clase y tiene algunos métodos estáticos, algunos no estáticos. Tiene una propiedad estática. Estoy tratando de acceder a esa propiedad dentro de todos sus métodos, no puedo descifrar la sintaxis correcta.¿Tiene acceso a la propiedad estática a través de métodos estáticos y no estáticos?

Lo que tengo es la siguiente:

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

¿Puede alguien decirme la sintaxis real para éste?

Respuesta

16

Para las propiedades estáticas utiliza el siguiente incluso dentro de una función no estática

return self::$mode; 

La razón de esto es porque existe la Propery estática si un objeto ha sido instanciado o no. Por lo tanto, solo estamos usando esa misma propiedad preexistente.

+1

Sí, eso funcionó. Gracias. Aunque me da un poco de curiosidad saber por qué el modo className :: $ no funciona. Aceptaré tu pregunta tan pronto como me deje. – DanRedux

+0

@DanRedux Cheers. ¿Estás seguro de que tu primera función no devuelve nada? – yehuda

+0

@DanRedux acaba de verificar su código y ambos funcionan bien con mi cambio de identidad. usar myClass también está bien. – yehuda

3

Si se encuentra fuera de la clase, asegúrese de no olvidar el $ o verá este error también. Por ejemplo, asegúrese de llamar así:

$myClass = new myClass(); 

echo $myClass::$mode; 

no como este:

echo $myClass::mode; 
+0

¡Ah! Definitivamente funciona mejor de esa manera. –

Cuestiones relacionadas