2012-07-02 3 views
0

Почему это работает:PHP свойство объекта NULL в требуемой странице

echo $session->name; 
require_once('test.php'); 
//echos the name then loads the required page 

Но

var_dump($session->name); 

в коде test.php возвращает NULL.

Я думал, что require_once в значительной степени сбрасывает весь код с необходимой страницы в то место, где я ему рассказывал.

EDIT

экземпляр $ сеанса создается перед требовать, вне test.php. Если я создам новый экземпляр $ session внутри test.php, он будет работать. Рад, что это работает, но это все еще не имеет смысла для меня, может ли кто-нибудь объяснить?

+3

является var_dump единственное, что есть в test.php? – Cfreak

+0

и что возвращает var_dump ($ session)? –

+0

Нет другого кода, который отлично работает в 'test.php'. 'var_dump ($ session)' возвращает объект, если вне test.php, но NULL, когда он внутри него. –

ответ

0

$session не входит в сферу применения. включите этот скрипт, где вы инициализировали $ session. или объявить его глобальным во всех сценариях, которые сохранят включение только для $ session. почему бы не использовать $_SESSION?

+0

Объявил $ session глобальным и имел ту же проблему, поэтому он не может быть областью видимости. Я использую '$ _SESSION' для разных вещей в объекте $ session. –

-1

Невский вопрос: вы уже требовали_исследовать test.php где-то еще в вашем скрипте? Если это так, то возможно, что $ session может не быть установлен, когда вы включили его в первый раз. Вы попробовали включить ('test.php') вместо этого?

DEBUGGING EDIT:

Вы можете проверить вещи порядка в настоящее время называется в пробуя следующее:

В caller.php (или что вы его называете) Файл:

echo "Debug 1"; 
echo $session->name; 
require_once('test.php'); 

В test.php:

echo "Debug 2"; 
var_dump($session->name); 

Что напечатано первым, Debug 1 или Debug 2?

+0

Не требуется test.php в другом месте. Экземпляр $ session создается до того, как я сделаю что-нибудь еще. –

+0

Кому бы ни было downvoted это: И это было downvoted почему, точно? Это довольно колючий, чтобы опросить ответ без какой-либо причины, почему вы думаете, что это не может быть правильным ответом. Я сижу здесь с несколькими тестовыми файлами, которые, согласно оригинальным спецификациям OP, дублируют то, что он описывает именно из-за удвоенного require_once. –

+0

Отладка 1, которая сбрасывает объект, затем отладка 2, которая равна NULL –

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