我正在创建一个带有变量的类,如下面的代码所示,我要访问
$allen = new guest(...); echo $allen->userName;
相反,我必须使用这个
$allen->getUserName();
但是由于创建类后用户名不会更改,有没有办法做到这一点?
<?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]; // this is messy but work
}
function getUserName() {
preg_match('/^.*(?=(@))/i', $this->email, $userName);
return $userName[0];
}
}
?>
为了拒绝直接访问您的class属性,您可以将其定义为private
。这样,类似的构造$allen->userName
将引发错误。这也称为封装。
首先,请确保正确初始化类对象。在PHP中,您应该使用__constructor函数定义构造函数。这是示例:
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;
}
}
构造函数接收4个参数$firstName, $lastName, $email, $userName
。为了创建此类的对象,您可以执行以下代码:
$allen = new Guest('John', 'Doe', '[email protected]', 'username');
要检索用户名,请写以下行:
$allen->getUsername();
在您当前的构造函数中,有一些问题是不好的,因为我认为您的userName
属性未正确初始化。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句