2009-11-28 2 views
1

왜 오류가 발생합니까? 같은 네임 스페이스의 클래스 ..네임 스페이스와 클래스의 클래스

PHP는 5.3.0

namespace ExampleSystem\Core; 
class Test { 
    public function __construct() { 
     print 'Test ok'; 
    } 
} 

// Fatal error: Class 'Test' not found in ... 
$class_name = 'Test'; 
$obj = new $class_name; 

// Ok 
$class_name = 'ExampleSystem\Core\Test'; 
$obj = new $class_name; 

// Ok 
$obj = new Test; 
+3

그래서 * 전설적인 네임 스페이스가 어떻게 생겼는지 ... –

답변

2

나는 PHP 설명서의 장과 절을 찾을 수 있지만, 명백한 설명은 당신이 할 때이다 :

$obj = new $string 

값이 $string이면 현재 네임 스페이스에 매핑되지 않습니다. 이것은 $string이 다른 네임 스페이스가 적용되었을 수도있는 다른 곳에서 전달되었을 수 있다고 생각할 때 의미가 있습니다.

+0

PHP는 네임 스페이스의 컨텍스트에서 평가할 것으로 예상했지만 PHP는 거의 기대하지 않는 것처럼 보였습니다. 지금부터 기대할 수 있습니다. 보통 내가 원하는 것을 해줍니다. :) – mtvee

+0

고마워요! php.net 사이트에서 예를 발견했습니다 ... 마법 상수 __NAMESPACE__이 (가) 답변입니다. http://il2.php.net/manual/en/language.namespaces.nsconstants.php 예 3 – Alex

관련 문제