我不想在__construction中设置类变量,而是在__construct调用的方法中设置。我不确定我做这件事是否正确。
class request{
private $sNote;
private $iAffectedUserId;
private $iUserId;
private $sPassword;
private $sFirstName;
private $sLastName;
public function __construct($sService, $oData, $iAffectedUserId){
$this->iUserId = $_SESSION['user_Id'];
$this->sPassword = $_SESSION['password'];
$this->sFirstName = $_SESSION['firstName'];
$this->sLastName = $_SESSION['lastName'];
switch($sService){
case 'note':
$this->requestNote();
break;
default:
echo "ErrorCode: 4000";
break;
}
}
public function requestNote(){
$sQuery = "SELECT * FROM `note` WHERE `sender_Id` = '" . $this->iUserId . "'";
echo $sQuery;
$oResult = conn($sQuery);
if(!is_array($oResult)||!isset($oResult)||empty($oResult)||is_null($oResult)){
echo "ErrorCode: 5000";
} else{
//echo $this->iUserId;
echo json_encode($oResult);
}
}
}
此代码的结果使我的$sQuery
为空,其中$this->iUserId
为空。这意味着不返回任何内容。
代码是以其他方式编写的。
class request{
private $sNote;
private $iAffectedUserId;
private $iUserId;
private $sPassword;
private $sFirstName;
private $sLastName;
public function __construct($sService, $oData, $iAffectedUserId){
$this->init_Session_Variables();
switch($sService){
case 'note':
$this->requestNote();
break;
default:
echo "ErrorCode: 4000";
break;
}
}
private function init_Session_Variables(){
$this->iUserId = $_SESSION['user_Id'];
$this->sPassword = $_SESSION['password'];
$this->sFirstName = $_SESSION['firstName'];
$this->sLastName = $_SESSION['lastName'];
}
public function requestNote(){
$sQuery = "SELECT * FROM `note` WHERE `sender_Id` = '" . $this->$iUserId . "'";
echo $sQuery;
$oResult = conn($sQuery);
if(!is_array($oResult)||!isset($oResult)||empty($oResult)||is_null($oResult)){
echo "ErrorCode: 5000";
} else{
//echo $this->iUserId;
echo json_encode($oResult);
}
}
}
这种方式给了我一个错误,说:
注意:未定义的变量:C:''examplep''htdocs''apps''MyVyn''Utils''Utils''php''userQuery.php中的iUserId95行
我在这里真的不知所措。什么东西爆炸了?
iUserID 前面有一个额外的$
$sQuery = "SELECT * FROM `note` WHERE `sender_Id` = '" . $this->$iUserId . "'";
应该是
$sQuery = "SELECT * FROM `note` WHERE `sender_Id` = '" . $this->iUserId . "'";