2010-12-07 24 views
8

¿Cómo puedo establecer una variable global en esta clase? He intentado esto:Alcance variable Dentro de la clase PHP

class myClass 
{ 
    $test = "The Test Worked!"; 
    function example() 
    { 
     echo $test; 
    } 
    function example2() 
    { 
     echo $test." again"; 
    } 
} 

que no pudo cargar la página por completo citando un error 500. Después probé éste:

class myClass 
{ 
    public $test = "The Test Worked!"; 
    function example() 
    { 
     echo $test; 
    } 
    function example2() 
    { 
     echo $test." again"; 
    } 
} 

Pero cuando imprimí ambas cosas, todo lo que veo es "nuevo" Lo siento por una pregunta tan simple!

Gracias!

Respuesta

17

esta variable se puede acceder como esto

echo $this->test; 
+0

Gracias funcionó –

1

Trate de añadir $this al frente de sus variables; podría cambiar el segundo ejemplo de

class myClass { 
    public $test = "The Test Worked!"; 

    function example() { 
     echo $this->test; 
    } 

    function example2(){ 
     echo $this->test." again"; 
    } 
} 
5
class Foo { 

    public $bar = 'bar'; 

    function baz() { 
     $bar; // refers to local variable inside function, currently undefined 

     $this->bar; // refers to property $bar of $this object, 
        // i.e. the value 'bar' 
    } 
} 

$foo = new Foo(); 
$foo->bar; // refers to property $bar of object $foo, i.e. the value 'bar' 

favor comenzar a leer aquí: http://php.net/manual/en/language.oop5.basic.php

3

realidad, hay dos maneras de acceder a una variable o función en una clase, ya sea dentro de la clase o fuera de ella, si solicitan artículo es público (o en algunos casos protegidas)

class myClass 
{ 
    public $test = "The Test Worked!"; 
    function example() 
    { 
     echo $this->test; 
     // or with the scope resolution operator 
     echo myClass::test; 
    } 
    function example2() 
    { 
     echo $this->test." again"; 
     // or with the scope resolution operator 
     echo myClass::test." again"; 
    } 
} 
+0

en example2 allí, doesn' t necesita ser echo $ this-> test. "again";? –

+0

correcto, me olvidé de agregar 'this' a esa declaración, actualizada ... – Patrick

7

Si desea una variable de instancia (conserva sólo para esa instancia de la clase), utilice:

$this->test 

(como otra respuesta sugerida.)

Si desea una "clase" variable prefijo con la palabra clave "estática" de esta manera:

La variable de clase es diferente de la instancia variable en el sentido de que todas las instancias de objeto creadas a partir de la clase compartirán la misma variable.

(Nota para acceder a las variables de clase, utilice el nombre de clase, o 'auto', seguido de '::')

class myClass 
{ 
    public static $test = "The Test Worked!"; 
    function example() 
    { 
     echo self::$test; 
    } 
    function example2() 
    { 
     echo self::$test." again"; 
    } 
} 

Por último, si quieres un cierto constante (inmutable), el uso de 'const' en delante (de nuevo acceder a ella con 'auto' más '::' más el nombre de la constante (aunque esta vez omitir el '$'):!!

class myClass 
{ 
    const test = "The Test Worked!"; 
    function example() 
    { 
     echo self::test; 
    } 
    function example2() 
    { 
     echo self::test." again"; 
    } 
}