2014-10-28 4 views
0

У меня есть класс, который использует функцию, называемую __construct для назначения значений переменным класса. Однако переменные дают ошибки как неопределенные.Глобальные переменные, не определенные в php

session_start(); 

class request{ 
    private $sService; 
    private $sNote; 
    private $iAffectedUserId; 
    private $iUserId; 
    private $sPassword; 
    private $sFirstName; 
    private $sLastName; 

function __construct($sService, $oData){ 
    $this->init_Session_Variables(); 
    $this->$sService = $sService; 
} 

private function init_Session_Variables(){ 
    $this->$iUserId = $_SESSION['user_Id']; 
    $this->$sPassword = $_SESSION['password']; 
    $this->$sFirstName = $_SESSION['firstName']; 
    $this->$sLastName = $_SESSION['lastName']; 
} 
} 

Почему мои переменные класса возвращаются ошибки неопределенного, когда я пытаюсь присвоить им значение в init_Session_Variables()?

EDIT:

Ошибка:

Примечание: Undefined переменной: iUserId в C: \ XAMPP \ HTDOCS \ приложения \ MyVyn \ Utils \ Utils \ PHP \ userQuery.php на линии

+0

Когда вы получите сообщение об ошибке, вы должны опубликовать точное сообщение об ошибке. – jeroen

ответ

2

переменные доступны как:

$this->iUserId 

в местном контексте.

$this->$iUserId 

бы эквивалент

$iUserId = 'x'; 
$this->x; 

, то есть, его как переменную переменной, $this->$iUserId является $this->"whatever $userId is set to"

+0

Результаты не изменились. все еще показывая неопределенные. Сначала я пытаюсь назначить, прежде чем обращаться. – user2812097

+0

Я бы 'var_dump ($ _ SESSION ['user_Id']);' и убедиться, что он сам определен – andrew

+0

Хорошо, я думал, что я должен был ссылаться на значение напрямую, чтобы установить его. благодаря – user2812097

1

Ваш уступка неправильна, вы должны использовать, например:

$this->sService = $sService; 

Кроме того, они не являются глобальными переменными, они являются переменными класса.

+0

Я имел в виду глобальный класс. $ SService в порядке и работает именно так, как мне нужно. Это init_Session_Variables(), который не работает. – user2812097

+1

Я не вижу, как это работает ... но вам нужно скорректировать назначение. –

Смежные вопросы