2012-01-20 5 views
2

저는 php5에서 첫 번째 테스트를하고 있습니다. 더 구체적으로 나는 네임 스페이스를 사용하려고 노력하고 있지만 PHP가 네임 스페이스를 해결하지 못하는 것 같습니다. 내가 수행 한 다음 테스트 :PHP에서 네임 스페이스를 해결하는 방법은 무엇입니까?

파일 1 : test.php

<? 
namespace \first_test; 

class Test { 
    function test_function(){ 
     print "works"; 
    } 
} 
?> 

파일 2 : use_namespace.php

<? 
use \first_test; 


$a=new \first_test\Test(); 
$a->test_function(); 
?> 

내가 치명적인 오류 얻을 : 치명적인 오류 : 클래스 ' first_test \ Test '는 에 존재하지 않습니다 here_the_path_where use_namespace.php에 있습니다.

도움을 주시면 감사하겠습니다.

P. 두 파일 모두 Windows의 php 5.3.9와 같은 디렉토리에 있습니다.

+2

어쨌든 파일을 포함해서는 안됩니까? – dynamic

+0

@ yes123, 아래 내 의견을 읽어보십시오. 나는 왜 내가 추측하는지에 관해 논한다. 나는 파일을 포함시키지 않았다. – xtarafa

답변

2

네임 스페이스를 선언 할 때 \이 필요하지는 않지만 네임 스페이스를 선언 할 때만 필요합니다.

<?php 
    namespace first_test; 

    // ... 
?> 

또한, 당신의 두번째 파일에, 당신은 그렇지 않으면 first_test이 무엇인지 모르는, include test.php해야합니다.

+0

만약 당신이'use first_test;를한다면 네임 스페이스없이 클래스를 인스턴스화 할 수 있습니다 :'$ a = new Test; ' – Alfwed

+1

안녕하세요 @Rocket. 내가 말했듯이 이것은 시험이다. 목표는 네임 스페이스를 사용하는 타사 라이브러리를 사용하는 것입니다. 그것은 작동하지 않았으므로 나는 작은 세트 테스트를 만들었습니다. 내가 아는 한 test.php를 포함하지 말아야한다. ** 사용 **으로 가져 오기는 충분해야한다. 실제로 라이브러리에는 여러 파일이 있으며 아무도 다른 사람을 포함하지 않으며 네임 스페이스를 선언하고 ** 키워드를 사용하여 가져옵니다. 그래서 뭔가가 네임 스페이스를 감지 할 수없는 PHP 구성과 관련이있을 것 같아? include_path 값과 해당 phps가있는 디렉토리를 확인했습니다. 어떤 생각? 고마워. – xtarafa

+0

@xtarafa : 네임 스페이스가 어떻게 작동하는지 실제로 알지 못합니다. 그건 내가 생각할 수있는 첫 번째 것입니다. –

관련 문제