2012-07-02 5 views
0

이 작품 않는 이유 : test.php의 코드에서PHP는 객체 속성 NULL은

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

그러나

var_dump($session->name); 

를 NULL을 반환한다.

내가 생각한 자리에 필요한 페이지의 코드가 모두 require_once 인 것으로 생각했다. (가) 필요로하기 전에

편집

$ 세션 인스턴스는 test.php 외부에서 생성됩니다. test.php 안에 $ session의 새 인스턴스를 만들면 작동합니다. 다행이지만 다행히도 나에게 의미가 없다. 누구나 설명 할 수 있을까?

+3

은 var_dump test.php에서 유일한 것입니까? – Cfreak

+0

그리고 var_dump ($ session)은 무엇을 반환합니까? –

+0

'test.php'에서 정상적으로 동작하는 다른 코드가 없습니다. 'var_dump ($ session)'은 test.php의 바깥 쪽에서는 객체를 반환하지만 안쪽에서는 NULL을 반환합니다. –

답변

0

$session은 범위에 포함되지 않습니다. $ session을 초기화 한 스크립트를 포함 시키십시오. 또는 $ 세션에 대해서만 include를 저장할 모든 스크립트에서이를 전역으로 선언하십시오. 왜 사용 $_SESSION?

+0

전역 세션을 $ 세션으로 선언 했으므로 같은 문제가 발생하여 범위 작업이되지 않습니다. 나는 $ session 객체의 여러 가지 것들에 대해'$ _SESSION'을 사용합니다. –

-1

멍청한 질문 : 이미 스크립트에 require_once'd test.php가 필요합니까? 그렇다면 처음 $ 세션을 포함 시켰을 때 $ 세션이 설정되지 않았을 수 있습니다. 대신 ('test.php') include를 시도 했습니까?

디버깅 편집 : (당신이 전화 또는 무엇이든) 파일 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을 덤프하는 디버그 1, 그리고 NULL 인 디버그 2 –