【发布时间】:2015-06-13 19:13:18
【问题描述】:
我正在创建一个带变量的类,正如您从下面的代码中看到的那样, 我想访问
$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];
}
}
?>
【问题讨论】:
-
对 PHP 类中的属性使用
var是对 PHP 4 的回归,只是为了向后兼容而维护.....但建议您使用public/protected/private可见性而不是....但是,由于var被视为public,echo $allen->username;完全有效 -
如果您不想在类实例化后更改 $username,请为您的属性设置适当的可见性
-
您确定这是您的真实代码,并且有效吗?
getUserName()指的是$userName,而不是$this->userName? -
no,opt 1 和 opt 2,它不起作用,似乎有冲突 b/c getUserName 函数是在 __construct 之后编写的。 ?
标签: php class constructor