您的位置:首页 > 编程语言 > PHP开发

什么是php命名空间

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

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

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

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

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

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

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



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



结果:



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

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

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


上面代码的结果是: usa\My::who

如果定义命名空间为china:

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

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


结果为:

192.168.0.17
china\MyFunction
usa\My::who


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

命名空间要求:

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

第一次了解命名空间,如果上面有些定义说的不好,请留下您的意见,我对命名空间还有很多的疑问,比如:怎么使用命名空间影响常量和函数,如果你知道,或者你在哪里看到过好的解释,请给我留言
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: