欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

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

程序员文章站 2024-01-04 16:44:10
...
命名空间和文件系统的结构很像,文件夹可以有子文件夹,命名空间也可以定义子空间来描述各个空间之间的所属关系。上一章节介绍了什么是命名空间?以及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 'common.php';  //引入当前目录下的文件
 $demo = new Demo;    //出现致命错误:找不到 cn\my\Demo类
 $demo = new \Demo(); //正确的方式  加上 \
 var_dump();   // 错误,系统函数在公共空间
 \var_dump();  // 正确,使用了 \
?>

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

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

【相关教程推荐】

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

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

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

以上就是php命名空间:子空间和公共空间实例详解的详细内容,更多请关注其它相关文章!

上一篇:

下一篇: