首頁 > 後端開發 > 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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板