广义上说。命名空间是一种封装事物的方法。
例子,在操作系统中目录用来将相关文件分组,对于目录中的文件,就扮演着命名空间的角色。。。
具体解释:文件foot.txt可以同时在目录/home/greg和home/other中存在,但是同一目录中不能存在两个foo.txt文件。另外在目录/home/greg外访问foo.txt文件时,我们必须将目录名以及目录分隔符放在文件名之前得到/home/grag/foot.txt。
<?php
namespace jiangsu;
function ceshi()
{
echo "1111";
}
ceshi();//非限定名称
namespace xuzhou;
function ceshi()
{
echo "hello world";
}
//jiangsu\ceshi();//限定名称访问方式
\jiangsu\ceshi();//完全限定名称访问(绝对路径)
1.命名空间只对类,函数,常量起作用
2.第一个命名空间前面不可以有任何有效代码
3.命名空间是虚拟抽象的空间,不是真的存在的目录
子空间的声明 (主|子)
子空间的声明 (主|子)
namespace jiangsu\xuzhou;
function ceshi()
{
echo 111;
}
namespace jiangsu\pizhou;
function ceshi()
{
echo 222;
}
namespace jiangsu\daizhuang;
function ceshi()
{
echo 333;
}
function ceshi2()
{
echo 322;
}
//类
class People
{
static $name = '戴庄人';
}
namespace jiangsu\huangshi;
function ceshi()
{
echo 444;
}
访问 完全限定名称
\jiangsu\pizhou\ceshi();
空间的引入
空间的引入
use jiangsu\daizhuang\People;//引入的一个元素
echo People::$name;//访问静态的
先去本空间找,然后再去
use jiangsu\daizhuang;//引入空间
daizhuang\ceshi2();
echo daizhuang\People::$name;
别名
use jiangsu\daizhuang\People as pe;
echo pe::$name;
公共空间
namespace zhongguo\jiangsu;
function ceshi()
{
echo '江苏';
}
include('./ggkj.php');//公共的命名空间 未指定命名空间
namespace zhongguo\xuzhou;
function ceshi()
{
echo '徐州';
}
class Pepole
{
static $name = "徐州人";
}
\ceshi();//访问公共命名空间
//引入的内容有命名空间,本身没有命名空间。直接访问公共空间的元素
//存在命名空间,最上面一行,只能写命名空间。namespace