PHP: доступ к существующему объекту в классе - PullRequest
0 голосов
/ 30 января 2011

У меня есть ранее существующий объект с именем Information, который содержит информацию для входа в систему / пользователя.Я хотел бы получить доступ к этому из другого класса.Я пробовал гуглить и искать целую вечность ... не повезло.Почему объект Information выходит из области видимости?

class foo() {
 function display() {
   print_r($Information);
 }
}

1 Ответ

1 голос
/ 30 января 2011

$ Информация может быть вне области действия по многим причинам.

Во-первых, возможно, $ Information является глобальным, и вам просто нужно сообщить php с ключевым словом global :

class foo() {
 function display() {
   global $Information
   print_r($Information);
 }
}

Во-вторых, может быть $ Information является частью экземпляра foo? В этом случае в php вам понадобится ключевое слово "$ this".

class foo() {
 function display() {       
   print_r($this->Information);
 }
}

В-третьих, возможно, $ Information был создан в вызывающей стороне display, а display / foo просто ничего об этом не знает.

function bar() 
{
   $Information = new $information;
   $a = new Foo();
   $a->display();
{

Если вы явно не передадите $ Information для отображения или не сделаете его переменной-членом каждого экземпляра Foo, display не сможет получить к нему доступ. Дисплей может видеть (1) глобальные переменные (2) переменные экземпляра, (3) параметры для отображения и (4) переменные, локальные для отображения. Ничто другое не входит в объем отображения ().

Правки для ответов на ваши вопросы Да, под глобальным я имею в виду, что изначально он был определен как глобальный. Как не в конкретной функции, то есть:

Есть много причин, чтобы избегать глобалов. Много было написано на эту тему. Вот вопрос stackoverflow по теме.

...