2009-08-18 36 views
8

Tengo el siguiente código (yo soy un desarrolladores Dot Net y pensé que si puedo aportar mis conocimientos de PHP POO a)variables de PHP en clases

class user { 
    var $_un; 
    function user($un) { 
    $_un = $un; 
    } 
    function adduser() { 
    } 
    function checkuser() { 
    } 
    function printuser() { 
     echo $_un; 
    } 
} 

$newuser = new user('Omar Abid'); 
$newuser->printuser(); 

Así que el problema es simple "$ _un" es ¡¡vacío!! Quiero que se llene cuando la clase se crea usando el constructor y luego se guarda.

Solía ​​hacer eso en C# .net, pero aquí no funciona por alguna razón. Gracias!

Respuesta

7

Para acceder a los miembros de la clase en PHP debe usar $this->.

Entonces, lo que está haciendo actualmente es declarar una variable local llamada $_un, en lugar de asignarla a la variable miembro $this->_un.

trate de cambiar su código para:

function user($un) { 
$this->_un = $un; 
} 

function printuser() { 
    echo $this->_un; 
} 

y debería funcionar.

+0

la otra función debería cambios también \t función printuser() { \t \t echo $ this -> _ ONU; \t} Gracias que está funcionando correctamente ahora –

+0

sí, lo siento me perdí 'printuser()', fijo mi respuesta –

2

Utilice este constructo.

class user {  
    var $_un;  
    function user($un) 
    { 
     $this->_un = $un;  
    } 
} 
3

en php tiene que usar $this acceder a variables (o métodos) de la clase actual, esto es necesario distinguir miembros de la clase a partir de variables locales

9

En lugar de usuario() se debe utilizar __construct (), es la forma preferida de agregar un Constructor en PHP5. Considera también añadir visibilidad a sus métodos y miembros (pública/protected/privadas)

public function __construct($un) { 
    $this->_un = $un; 
} 
+0

Esta es la respuesta correcta ... – tekknolagi

+0

Si tiene 20 variables, por ejemplo, quieres que enumerarlos como argumentos en __construct (var1, var2, etc)? – AlxVallejo