首页 >后端开发 >php教程 >php命名空间:子空间和公共空间实例详解

php命名空间:子空间和公共空间实例详解

伊谢尔伦
伊谢尔伦原创
2017-05-18 15:52:222777浏览

命名空间和文件系统的结构很像,文件夹可以有子文件夹,命名空间也可以定义子空间来描述各个空间之间的所属关系。上一章节介绍了什么是命名空间?以及php命名空间的基本应用,这里我们开始了解下命名空间的子空间和公共空间。

通过下面的例子来说明什么是子空间

例如, cart 和 order 这两个模块都处于同一个 shop 项目内,通过命名空间子空间表达关系。

代码如下所示

<?php
namespace shop\cart;   //命名空间表示处于 shop 项目下的 cart
class Test {
}
namespace shop\order;  //命名空间表示处于 shop 项目下的 order
class Test {
   //申明与上面空间相同的类
}
$test =new Test();        //调用当前的类
$cart = new \shop\cart\Test();   //调用shop\cart空间的类
?>

命名空间的子空间还可以定义很多层次,例如 cn\my\www\shop 。多层子空间的声明通常使用公司域名的倒置,再加上项目名称组合而成。这样做的好处是域名在互联网上是不重复的,不会出现和网上同名的命名空间,还可以辨别出是哪家公司的具体项目。有很强的广告效应。

命名空间中的公共空间

命名空间的公共空间很容易理解,其实没有定义命名空间的方法、类库和常量都默认归属于公共空间,这样就解释了在以前版本编写的代码大部分都可以在 PHP5.3 以后的版本中运行。另外,公共空间中的代码段被引入到某个命名空间下以后,该公共空间中的代码段不属于任何命名空间。例如,声明一个脚本文件 common.php,在文件中声明的函数和类。

其代码如下所示:

<?php
 function fun(){
   
 }
 class Demo{
   
 }
?>

再创建一个 PHP 文件,并在一个命名空间里引入这个脚本文件 common.php,但可脚本里的类和函数并不会归属到这个命名空间。如果这个脚本里没有定义其他命名空间,它的元素就始终处于公共空间中。

代码如下所示:

<?php
 namespace cn\my;
 include &#39;common.php&#39;;  //引入当前目录下的文件
 $demo = new Demo;    //出现致命错误:找不到 cn\my\Demo类
 $demo = new \Demo(); //正确的方式  加上 \
 var_dump();   // 错误,系统函数在公共空间
 \var_dump();  // 正确,使用了 \
?>

说明:调用公共空间的方式是直接在元素名称前面加上 \ 就可以了,否则 PHP 解析器会认为用户像调用当前空间下的元素。除了自定义的元素,还包括 PHP 自带的元素,都属于公共空间。其实公共空间的函数和常量不用加 \ 也可以正常调用,但是为了正确区分元素所在区域,还是建议调用函数的时候加上 \

命名空间的子空间和公共空间就介绍到这里,下一节给大家带来的是命名空间中的三种名称和术语

【相关教程推荐】

1. 《php.cn独孤九贱(4)-php视频教程

2.  视频教程:命名空间:我们虽然同名同性,但却属于不同时空

3.  php编程从入门到精通全套教程

以上是php命名空间:子空间和公共空间实例详解的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn