【PHP高级特性】命名空间

1、命名空间:PHP5.3.0开始,增加namespace命令空间特性。

命名空间将代码划分出不同的区域,不同空间的相同常量名、函数名、类名互不影响。

同一个PHP文件中可以创建多个命名空间。但是规范一个文件只写一个命名空间。

//命名空间代码写在php代码开始处。
//创建一个名为:Home\Controller的命名空间
//表示Home目录下的Controller命名空间,一个Controller命名空间下可以有若干个类
 
namespace Home\Controller;

2、调用不同命名空间的方法

1:采用完全限定名称

例如:分别定义两个命名空间(可以定义在相同文件中,也可以定义在不同文件中)

//当前MessageBoard命名空间中存在Comment类
namespaceMessageBoard;
classComment{}
 
//另一个Article命名空间中存在Comment类
namespaceArticle;
classComment{}
 
------------------------------------------
 
/* 调用方法 */
//调用当前空间(MessageBoard)的Comment类(非限定名称、直接调用类名)
$comment =newComment();
//调用Article空间的Comment类(完全限定名称、调用绝对路径下的类名)【常用于调用自身类库】
$article_comment =new \Article\Comment();

2:采用use导入命名空间(常用)

//创建一个BBS命名空间
namespace BBS;
//导入另一个命名空间(use 命名空间名\类名)(as 表示别名)
useBlog\Article as List;
 
//导入其他命名空间后调用其他命名空间的类(限定名称、调用相对路径)【常用于调用自身类库】
$article_comment =new List();
注意:导入命名空间的时候,如果当前空间与导入的命名空间有相同的名字元素会发生致命错误。
 
4、调用第三方类库【常用于调用第三方类库】
function open() {    include "./ThinkPHP/Library/img/Image.php"; // 引入第三方类库
$image = new \Image(); // 实例化类名
$image->open('./1.jpg'); //使用类中的方法 }

附:非限定名称、限定名称、完全限定名称

1.非限定名称,或不包含前缀的类名称,例如 $comment =newComment();。如果当前命名空间是Blog\Article,Comment将被解析为Blog\Article\Comment。
如果使用Comment的代码不包含在任何命名空间中的代码(全局空间中),则Comment会被解析为Comment。

2.限定名称,或包含前缀的名称,例如 $comment =newArticle\Comment();。如果当前的命名空间是Blog,则Comment会被解析为Blog\Article\Comment。
如果使用Comment的代码不包含在任何命名空间中的代码(全局空间中),则Comment会被解析为Comment。

3.完全限定名称,或包含了全局前缀操作符的名称,例如 $comment =new \Article\Comment();。在这种情况下,Comment总是被解析为代码中的文字名(literal name)Article\Comment。
非限定名称 = 文件名 限定名称 = 相对路径 完全限定名称 = 绝对路径 没有定义命名空间的文件都属于公共空间。

--------------------------------------------------------------------
承接网站开发、小程序开发、app开发、商城开发、公众号开发。
百度SEO排名、百度搜索霸屏、软文代写等业务。
联系QQ:2779459018     联系微信:qianxia39

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值