> 백엔드 개발 > PHP 튜토리얼 > 关于命名空间

关于命名空间

WBOY
풀어 주다: 2016-06-06 20:27:07
원래의
1184명이 탐색했습니다.

关于命名空间

看这段代码,关于PHP命名空间的用法,这里:

class TimestampBehavior extends AttributeBehavior

这里继承了AttributeBehavior这个类,但是前面命名空间并没有use yii\behaviors\AttributeBehavior;

请问如果一个类继承的类是同一个namespace中的,是否就不用use引入呢?

回复内容:

关于命名空间

看这段代码,关于PHP命名空间的用法,这里:

class TimestampBehavior extends AttributeBehavior

这里继承了AttributeBehavior这个类,但是前面命名空间并没有use yii\behaviors\AttributeBehavior;

请问如果一个类继承的类是同一个namespace中的,是否就不用use引入呢?

这个跟命名空间没多大关系,其实是框架自动加载,能够extends类,这个类肯定要先引入

这个与 PHP 对 “命名空间解析规则”有关,请参考:名称解析规则,其中的第 3 点和第 6 点能够给你答案。

当前文件的命名空间是 yii\behaviors,那么该文件中“非完全限定名称”的类都将会被认为是该命名空间下的类。比如这里的父类 AttributeBehavior 会被认为是 yii\behaviors\AttributeBehavior,所以不需要使用 use 关键字显式导入该类。而不属于当前命名空间的类,使用时必须显式声明(使用 use 或者 完全限定名称),比如 yii\db\Expression。这个与继承无关,所以要搞清楚。

use 关键字的理解上是有问题的,它只是声明而并不是真正的导入该类,只有当该类被使用时,才会真正引入(require)该类。yii 是有自动加载模块的,这个不需要自己关心,只要命名空间声明正确就可以了。

注:“完全限定名称”说白了就是该类的完整的命名空间+类名。

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿