我正在使用PDT和Xdebugger(所有最新版本)运行Eclipse Indigo,并在Ubuntu 11.04上运行LAMP服务器。
在调试时,对象函数(参见下面的代码)将不会执行;调试器只是默认值 - 变量窗口完全空白,它只是冻结。页面也不会加载,它只是处于加载状态。
一切都很好,直到我开始在对象上调用函数。
建议?
以下是代码:
<?php
require_once 'user.php';
require_once 'fetcher.php';
require_once 'inscriber.php';
$uname=$_POST['regname'];
$upass=$_POST['regpass'];
$ufirst=$_POST['regfirst'];
$ulast=$_POST['reglast'];
$uemail=$_POST['regemail'];
$uphone=$_POST['regphone'];
$user = new User();
$user->setUsername($uname); // THIS IS WHERE IT FREEZES UP
$user->setPassword($upass);
$user->setFirstname($ufirst);
$user->setLastname($ulast);
$user->setEmail($uemail);
$user->setPhone($uphone);
$inscriber = Inscriber::getInscriberInstance();
$success = $inscriber->inscribeUser($user);
?>
<?php
class User{
private $username;
private $password;
private $userID;
private $firstname;
private $lastname;
private $phone;
private $email;
public function getUsername(){
return $username;
}
public function setUsername($var){
$this->$username = $var;
}
///
public function getPassword(){
return $password;
}
public function setPassword($var){
$this->$password = $var;
}
///
public function getUserID(){
return $userID;
}
public function setUserID($var){
$this->$userID = $var;
}
///
public function getFirstname(){
return $firstname;
}
public function setFirstname($var){
$this->$firstname = $var;
}
///
public function getLastname(){
return $lastname;
}
public function setLastname($var){
$this->$lastname = $var;
}
///
public function getPhone(){
return $phone;
}
public function setPhone($var){
$this->$phone = $var;
}
///
public function getEmail(){
return $email;
}
public function setEmail($var){
$this->$email = $var;
}
}
答案 0 :(得分:3)
$this->$username = $var;
这是一个“动态属性”。 PHP尝试用变量的内容替换$username
。变量不存在,因此生成的$this-> = $var
失败
$this->username = $var;
始终在没有$
的情况下调用(非静态)属性。
使用局部变量的getter中的附加内容
public function getUsername(){
return $username;
}
不知道,为什么你(至少尝试)在setter中使用属性,但在getter中使用局部变量
public function getUsername(){
return $this->username;
}
旁注:“对象函数”被称为“方法”
答案 1 :(得分:2)
您的语法不太正确(在本例中)。你想这样做:
//...
public function getUsername(){
return $this->username; //added $this->...
}
public function setUsername($var){
$this->username = $var; //no $-sign before 'username'
}
//...
这也适用于所有其他功能。