2009-09-22 4 views
1

정적 키워드에 대해 PHP5.3.0에서 mvc framwork의 종류를 개발하기 시작했으나 여기서부터 네임 스페이스를 활용해야한다고 말했습니다. 이제PHP 5.3.0에서 동일한 네임 스페이스 내에 뷰 파일을 포함합니다.

namespace view 
{ 
    function load($filepath) 
    { 
     include($filepath); 
    } 
    function helper() 
    { 
     echo 'lorem ipsum'; 
    } 
} 
view\load('view.php'); 

의 내 view.php은 다음과 같습니다 가정 해 봅시다 : 포함 된 파일입니다 becuase 그것은 작동하지 않습니다

<?= helper() ?> 

그래서 내가보기에 이런 일이 어떤 이유로 글로벌 네임 스페이스에서, 그래서 view \ helper()를 작성해야했다.

이 작업을 수행하는 방법에 대해 알고 계십니까? 질문 제목이 꽤 많이 포함되어있는 곳과 같은 네임 스페이스 안에 파일을 포함시키는 것이 좋습니다.

이 EXACT 코드 시나리오에서는 솔루션을 필요로하지 않으며, 내 문제를 이해하기 쉽도록 단순화되었습니다.

답변

3

필자는 PHP의 네임 스페이스 기능에 대해 아직 자세히 조사하지 않았지만 가능하다고 생각합니다. 단지 오기로 use view\helper;is not possible either를 사용 helper를 가져 오는 클래스 이름과 다른 네임 스페이스의 작동

namespace view; 
helper(); // works 

참고 : 당신이 view.php가 같은 공간에 있음을 선언하지 않는 한 included() 파일은 전역 네임 스페이스에있을 것입니다.

편집 :

namespace view { 
    class Template { 
     public function load($filepath) { 
      include($filepath); 
     } 

     function helper(){ 
      echo 'lorem ipsum'; 
     } 
    } 

    $a = new Template(); 
    $a->load('test.php'); 
} 

view.php :

$this->helper(); 
0
이 같은 일을 할 수 있도록, 여전히 포함 된 파일에 현재 범위을 수출하는 함수 내에서 include()를 호출

"load"메소드로로드하는 대신 클래스 자동로드를 구현했습니다. 또한 왜 모든 view.php 파일을 같은 네임 스페이스에 넣을 수 없는지 나는 알지 못합니다.

관련 문제