>백엔드 개발 >PHP 튜토리얼 >YIi2가 네임스페이스를 사용하여 포함하지 않고 외부 개체를 사용할 수 있는 이유는 무엇입니까?

YIi2가 네임스페이스를 사용하여 포함하지 않고 외부 개체를 사용할 수 있는 이유는 무엇입니까?

WBOY
WBOY원래의
2016-08-08 09:06:441388검색

언급했듯이 일부 Yii2 작성 방법에서는 다음과 같이 네임스페이스를 직접 로드할 수 있다는 것을 확인했습니다.

<code> namespace web\models;
    
    use Yii; 
    use web\classes\CPost;
    
   //... code ...   
    
   $post = new CPost;</code>

위 webmodels 네임스페이스에서는 new 키워드
를 사용하여 CPost 객체를 직접 생성할 수 있지만, 다음과 같이 네임스페이스에 대한 별도 테스트를 진행했습니다.

<code> namespace web\models;

   // include "../classes/CPost.php";  这句必须取消注释才不报错
   use web\classes\CPost;

      class MPost {

        public function run(){
            echo "MPost->run()被调用";
        }

        public function getClassFunc(){
            $class = new CPost;
            $class->run();  //报错,提示找不到 web\classes\CPost对象
        }
    }
   
    $post = new MPost;
    $post->getClassFunc(); </code>

테스트 코드에서 CPost 파일을 포함하지 않으면 오류가 발생합니다.
그러나 Yii2는 전체 과정에서 파일을 도입하지 않으며, 네임스페이스만을 이용하여 직접 새로운 객체를 생성할 수 있습니다.
죄송합니다. 무슨 일이 일어나고 있으며 어떻게 진행되고 있나요?

답글 내용:

언급했듯이 일부 Yii2 작성 방법에서는 다음과 같이 네임스페이스를 직접 로드할 수 있다는 것을 확인했습니다.

<code> namespace web\models;
    
    use Yii; 
    use web\classes\CPost;
    
   //... code ...   
    
   $post = new CPost;</code>

위 webmodels 네임스페이스에서는 new 키워드
를 사용하여 CPost 객체를 직접 생성할 수 있지만, 다음과 같이 네임스페이스에 대한 별도 테스트를 진행했습니다.

<code> namespace web\models;

   // include "../classes/CPost.php";  这句必须取消注释才不报错
   use web\classes\CPost;

      class MPost {

        public function run(){
            echo "MPost->run()被调用";
        }

        public function getClassFunc(){
            $class = new CPost;
            $class->run();  //报错,提示找不到 web\classes\CPost对象
        }
    }
   
    $post = new MPost;
    $post->getClassFunc(); </code>

테스트 코드에서 CPost 파일을 포함하지 않으면 오류가 발생합니다.
그러나 Yii2는 전체 과정에서 파일을 도입하지 않으며, 네임스페이스만을 이용하여 직접 새로운 객체를 생성할 수 있습니다.
죄송합니다. 무슨 일이 일어나고 있으며 어떻게 진행되고 있나요?

spl 자동 로드, 그런데 작곡가를 배우세요

composer.json 파일의 내용을 확인하여 전체 디렉터리 또는 일부 파일의 자동 로드를 정의하는지 확인하세요.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.