这篇文章主要介绍了namesapce命名空间的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
1.命名空间的使用目的
在PHP中函数、类、常量是不允许同名的。为了解决这三者的同名问题,所以出现了命名空间,故而命名空间只影响类、函数、常量(const)。
2.命名空间的使用格式
a.可以命名一个空间
<?php namespace space1;//namespace关键字 +空间名 代码; ?>
b.也可以同时命名多个空间
<?php namespace space1;//namespace关键字 +空间名 代码1; namespace space2; 代码2; namespace space3; 代码3; .......//代码1,代码2,代码3,可相同亦可不同 ....... ?>
注意事项:如果一个php文件中,第一个空间的定义义必须放在第1行。不过凡事都有例外,在声明命名空间之前还有唯一合法的代码是用于定义源文件编码方式的 declare 语句。所有非 PHP 代码包括空白符都不能出现在命名空间的声明之前。例如下面的代码会报错。
<html> <?php namespace space1; namespace space2; ?> </html>
3.命名空间的访问
命名空间的访问分为:非限定空间访问,限定空间访问,完全限定访问。
a.非限定空间访问
<?php namespace space3; function f1(){ echo "space3"; } namespace space3\space2;//其中"\"代表space2是space3的子空间,同理space3是space2的父空间。 function f1(){ echo "space2"; } namespace space3\space2\space1; function f1(){ echo "space1"; } f1();//对上面空间成员进行访问,输出结果为:space1 ?>
b.限定空间访问
<?php namespace space2\space1; function f1(){ echo "space1"; } namespace space2; function f1(){ echo "space2"; } f1();//此时输出的是 space2 space1\f1();//此时输出的是space1 ?>
c.完全限定空间访问
<?php namespace space3; function f1(){ echo "space3"; } namespace space2; function f1(){ echo "space2"; } namespace space1; function f1(){ echo "space1"; } f1();//对上面空间成员进行访问,输出结果为:space1 \space3\f1();//对space3进行访问,输出结果为:space3 \space2\f1();//对space2进行访问,输出结果为:space2 ?>
4.引入空间成员
a.use 空间名\空间名 【as 别名】:将指定空间引入到当前空间。同可以使用as关键字为被引入的空间起个别名
b.use 空间名\空间名\成员类 【as 别名】:将指定的空间中的成员引入到当前空间,引入空间成员只能引入类
5.一些小情况
一旦命名空间出现,那么空间元素(类、常量、函数)的访问就被限定在空间内,如果使用非限定空间访问,系统会出现以下解析逻辑(限定名称或完全限定名称是直接按照路径准确查找)
首先在自己空间内查找
其次在如果找不到元素,不同空间元素的处理方式不同
系统常量,系统函数如果找不到,会全局空间去找
系统类是不会自动去全局空间去找的(报错,提示空间找不到)
<?php namespace space3; function f1(){ echo "space3"; } //当前所有访问如果使用非限定名称都代表访问当前空间内的元素 f1();//访问space3下f1()函数 //想要访问函数 define('PI',3.14);//space3下没有define()函数,全局函数有 //想要访问系统常量 echo PHP_VERSION; //space3下没有define()函数,全局函数有 //想要访问类 //错误方案 //$m=new Mysqli('localhost','root','root');//系统会提示类不存在 //正确方案 $m= new \Mysqli('localhost','root','root'); ?>
感谢你能够认真阅读完这篇文章,希望小编分享的“namesapce命名空间的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。