Reputation: 301
Is it possible to define a PHP class property and assign the value dynamically using a property within the same class? Something like:
class user {
public $firstname = "jing";
public $lastname = "ping";
public $balance = 10;
public $newCredit = 5;
public $fullname = $this->firstname.' '.$this->lastname;
public $totalBal = $this->balance+$this->newCredit;
function login() {
//some method goes here!
}
}
Yields:
Parse error: syntax error, unexpected '$this' (T_VARIABLE) on line 6
Is anything wrong in the above code? If so, please guide me and if it is not possible then what is a good way to accomplish this?
Upvotes: 4
Views: 1854
Reputation: 59681
You can put it into the constructor like this:
public function __construct() {
$this->fullname = $this->firstname.' '.$this->lastname;
$this->totalBal = $this->balance+$this->newCredit;
}
Why can't you do it the way you wanted? A quote from the manual explains it:
This declaration may include an initialization, but this initialization must be a constant value--that is, it must be able to be evaluated at compile time and must not depend on run-time information in order to be evaluated.
For more infromation about OOP properties see the manual: http://php.net/manual/en/language.oop5.properties.php
Upvotes: 11
Reputation: 2839
No, you cannot set properties like that.
However: you can set them in the constructor, so they will be available if someone creates an instance of the class :
public function __construct()
{
$this->fullname = $this->firstname . ' ' . $this->lastname;
}
Upvotes: 2