@1kbfree
2018-05-09T00:29:55.000000Z
字数 1343
阅读 1220
PHP
namespace是命名空间,那什么是命名空间呢,我打个比方,一个教师里有2个人都叫iamfree,那么当老师喊iamfree的时候,不知道是喊哪个,所以会混乱,为了方便,我们把2个iamfree分到a班和b班,这样的原理就是命名空间,在一个代码中,如果存在相同的函数或类,我们可以用命名空间来分开它们,俗话说一山不容二虎对吧~
<?php
/**
* @Author: iamfree
* @Date: 2018-05-07 21:25:26
* @Last Modified by: iamfree
* @Last Modified time: 2018-05-07 21:26:49
*/
namespace a; //声明命名空间a
function echo_name($name){
echo '老师在喊a班的'.$name;
}
echo_name('iamfree'); //调用此空间里的echo_name()
echo "<br />";
namespace b; //声明命名空间a
function echo_name($name){
echo '老师在喊b班的'.$name;
}
echo_name('iamfree'); //调用此空间里的echo_name()
echo "<meta charset='utf-8'>";//设置为utf-8编码
?>
define()
定义的常数无效,对const
定义的常数有效namespace
必须在第一行,否则报错(注释不算)echo_name()
<?php
/**
* @Author: iamfree
* @Date: 2018-05-07 21:25:26
* @Last Modified by: iamfree
* @Last Modified time: 2018-05-07 21:26:49
*/
namespace a;
function echo_name($name){
echo '老师在喊a班的'.$name;
}
namespace b;
function echo_name($name){
echo '老师在喊b班的'.$name;
}
\a\echo_name('iamfree'); \\想成是进入a班级去喊a班级里的iamfree
echo "<meta charset='utf-8'>";
?>
\a\echo_name('iamfree')
就是完全限定名称访问方式,也可以想成是绝对路径
那么当我们的多级命名空间多了的话怎么办,比如
namespace a\b\c\d\e
难道我们就要这样调用那个命名空间里的内容吗,这显然太麻烦了,那我们可以引入空间,下面我来演示一下
正确的调用引入的命名空间的函数:
那么这里还是要用限定名称才可以调用引入的命名空间里的内容,我们有没有什么更简单的方法呢,答案是有的,就是把命名空间里的类直接引入过来,下面来演示一下。
注意:只能引入类
在很多框架里就是利用这个来引入类的~
比如ThinkPHP
: