什么是php命名空间

php命名空间是在5.3版本后加入的,命名空间反过来就是空间命名,在这里的空间命名就像window下的文件夹命名,命名空间用关键字namespace来定义。在这里用文件夹举三个例子,比如相对于test文件夹下面的home.txt文件,他相对于文件夹的路径是 test/home.txt,当前文件下他的文件名是 home.txt,他的绝对路径是/test/home.txt.

命名空间也是用三种方式来表示:

完全限定符 esthome,像文件夹中的绝对路径;

限定名称 testhome,像相对文件的目录路径;

非限定名称 home,像前面的直接使用文件名。

一直以来不太理解官方的意思,今天自己做了测试,表达一下自己的理解:

我认为命名空间就好像地球,定义命名空间就像是对国家的定义,使用命名空间就像是出国,第三个比喻可能不是很恰当,上个例子:

下面是当前访问程序代码:

结果:

总结:定义命名空间就好像告诉我们现在在哪里,上面三个文件各自定义不同的命名空间,就好像三个不同的国家,他们中的物品不可能被另一个国家的人使用,前提是必须被带到另一个国家,这里就用到了使用命名空间,官方表示 类、函数、常量都受命名空间的影响,但是我这里却没有作用,只对类有影响(下面代码

<?php
/**
 * 当前文件名 word.php
 */
namespace japan;
use usaMy;
require_once("china.php");
require_once("usa.php");

// echo IP,'<br/>';
// echo MyFunction(),'<br/>';
echo My::who(),'<br/>';

 上面代码的结果是: usaMy::who

如果定义命名空间为china:

<?php
/**
 * 当前文件名 word.php
 */
namespace china;
use usaMy;
require_once("china.php");
require_once("usa.php");

echo IP,'<br/>';
echo MyFunction(),'<br/>';
echo My::who(),'<br/>';

 结果为:

192.168.0.17
chinaMyFunction
usaMy::who

 根据以上总结,命名空间的定义就是国家的定义,在程序中就像一个大的代码库,如果想使用另一个代码库的类,就需要使用命名空间;

命名空间要求:

命名空间前面不要出现任何字符(包括空白)

第一次了解命名空间,如果上面有些定义说的不好,请留下您的意见,我对命名空间还有很多的疑问,比如:怎么使用命名空间影响常量和函数,如果你知道,或者你在哪里看到过好的解释,请给我留言

如果您看了本篇博客,觉得对您有所收获,请点击右下角的 [推荐]

如果您想转载本博客,请注明出处

如果您对本文有意见或者建议,欢迎留言

感谢您的阅读,请关注我的后续博客

原文地址:https://www.cnblogs.com/geek12/p/3780561.html