变量在尝试访问数据时不起作用


Variables not behaving when trying to access data

我不想在__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 . "'";