PHP, how to set class variable value from function -
i creating class variable, can see code below, want access
$allen = new guest(...); echo $allen->username;
instead have use
$allen->getusername();
but since username won't change after class created, there way this?
<?php class guest { var $firstname; var $lastname; var $email; var $username; function guest($firstname, $lastname, $email) { $this->firstname = $firstname; $this->lastname = $lastname; $this->username = getusername(); // option 1 $this->username = $this->getusername(); // option 2 preg_match('/^.*(?=(@))/i', $this->email, $username); $this->username = $username[0]; // messy work } function getusername() { preg_match('/^.*(?=(@))/i', $this->email, $username); return $username[0]; } } ?>
in order deny direct access class attribute, can define private
. doing that, construction $allen->username
throw error. known encapsulation.
first make sure initialize class object properly. in php should define constructor using __constructor function. here example:
class guest { protected $lastname; protected $email; protected $lastname; protected $username; public function __construct($firstname, $lastname, $email, $username){ $this->firstname = $firstname; $this->lastname = $lastname; $this->email = $email; $this->username = $username; } public function getusername(){ return $this->username; } }
the constructor receives 4 parameters $firstname, $lastname, $email, $username
. in order create object of class can execute following code:
$allen = new guest('john', 'doe', 'some.email@email.com', 'username');
to retrieve username, write following line:
$allen->getusername();
in current constructor bad, becuase think username
attribute not initialized.
Comments
Post a Comment