2015-01-07 1 views
0

다음과 같은 문제가 클래스의 인스턴스를 만들 수 없습니다 :PHP 내가있어 공간

$a = new A(); 
$a->foo(); 

브라우저에서 php 파일을 열면 "bar"가 출력됩니다. 벌금!

이제 다른 파일에서 동일한 작업을 수행하려고합니다.

namespace model\dbAction; 

이 클래스 내 파일이 위에있는 경로이다

직접 처음에 나는 다음과 같은 네임 스페이스를 선언합니다.

그래서 다른 PHP 파일에서 나는 다음을 수행하십시오

$a = new \model\dbAction\A(); 
$a->foo(); 

그러나 나는 그것이의 인스 턴싱 직후 나누기 것 같습니다 그래서 실행되지 않습니다 그 이후로 모든 출력 및 기타 코드를 얻을하지 않습니다 수업.

다른 파일에서 클래스를 인스턴스화하는 이유는 무엇입니까?

감사합니다.

전체 코드 첫번째 PHP 파일 : (I 브라우저에서 호출) 두 번째 파일의

<?php 
namespace model\dbAction; 
class A 
{ 
    function foo() 
    { 
     echo "bar"; 
    } 
} 

전체 코드 :

$a = new \model\dbAction\A(); 
$a->foo(); 
+1

네임 스페이스 A가 있습니까? 그 계급보다 높습니까? –

+0

display_erros 및 error_level 사용 E_ALL – donald123

+0

네임 스페이스는 파일 경로 인 model \ dbActions입니다. 그리고 그것은 수업을 시작하기 전에 처음부터 선언되었습니다. 오류가 발생하면 다음과 같은 오류가 나타납니다. 치명적인 오류 : 'model \ dbAction \ A'클래스가 /var/www/dgroupReporting/install/install.php의 7 행에 없습니다. –

답변

1

당신은 여전히 ​​include에 파일이 필요합니다 - 제공 자동 로더를 사용하지 않는 한 네임 스페이스 자체에 파일이 포함되지 않습니다. 참조 : How do I use PHP namespaces with autoload?