tags:

views:

99

answers:

5

I have the following code (I'm a Dot Net developers and I thought if I can bring my OOP knowledge to PHP)

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

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

So the problem is simple "$_un" is empty!! I want it to be filled, when the class is created using the constructor and then saved.

I used to do that in C# .net, but here it doesn't work for some reasons. Thanks!

+3  A: 

In order to access class members in PHP you need to use $this-> .

So what you're currently doing is declaring a local variable called $_un, rather than assigned to the member variable $this->_un .

Try changing your code to:

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

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

And it should work.

therefromhere
the other function should changes also function printuser () { echo $this->_un; }Thanks it's working correctly now
Omar Abid
yes, sorry I missed `printuser()`, fixed my answer
therefromhere
+1  A: 

Use this construct.

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

Use :

function user($un) {
    $this->_un = $un;
}
Philippe
+1  A: 

in php you have to use $this to access variables (or methods) of the current class, this is necessary to distinguish class members from local variables

knittl
+5  A: 

Rather than user() you should use __construct(), it's the preferred way to add a Constructor in PHP5. Also consider to add visibility to your methods and members (public / protected / private)

public function __construct($un) {
    $this->_un = $un;
}
Benjamin Cremer