2011-01-30 4 views
0

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

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

ответ

1

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

Во-первых, может быть, $ информация является глобальным, и вы просто должны сказать PHP с глобального ключевого слова:

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

Во-вторых, может быть, $ Информация является частью экземпляра Foo? В этом случае в php вам понадобится ключевое слово «$ this».

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

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

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

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

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

Там есть много причин, чтобы избежать глобал. На эту тему написано много. Вот stackoverflow question по теме.

+0

Спасибо! Первый способ, которым я решил, - получить одно из свойств информации вне класса, а затем использовать ключевое слово global для доступа к этой переменной. Если вы не возражаете, что вы имеете в виду, когда говорите * $ Информация является глобальной *, как в .. когда она была определена первоначально, она была глобальной? Кроме того, есть ли ОСНОВНЫЕ причины, по которым я должен избегать использования глобальных в будущем? PS: Я сделал * global $ Information *, и это сработало. – Mike

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