命名空间
命名空间
◆完全限定名称(Fully-qualified name)
任何PHP代码都可以引用完全限定名称,它是一个以命名空间反斜线开头的标识符,如\App\Lib1\MYCONST,\App\Lib2\MyFunction( )等。
完全限定名称是没有任何歧义的,开头的反斜线和文件路径的作用有点类似,它表示“根”全局空间,如果我们在全局空间中实现了一个不同的MyFunction( ),可以使用\MyFunction( )从lib1.php或lib2.php调用它。
完全限定名称对一次性函数调用或对象初始化非常有用,但当你产生了大量的调用时它们就没有实用价值了,在下面的讨论中我们将会看到,PHP提供了其它选项以解除我们为命名空间打字的烦恼。
◆限定名称(Qualified name)
至少有一个命名空间分隔符的标识符,如Lib1\MyFunction( )。
◆非限定名称(Unqualified name)
没有命名空间分隔符的标识符,如MyFunction( )。
__NAMESPACE__是一个PHP字符串,它总是返回当前命名空间的名称,在全局空间中它是一个空字符串
namespace关键字可以用于明确引用一个当前命名空间或子命名空间中的项目,它等价于类中的self命名空间
小例子命名空间
入口文件 name.php
<?php function __autoload($name) { $name = str_replace("\\", '/', $name.".class.php"); require_once(dirname(__FILE__).'/'.$name); } use test\user as mc; $m = new mc(); var_dump($m); $m-> user2();
./test/user.class.php文件
<?php namespace test; class user { function user() { echo 'new'; } function user2() { echo '@@@@'; } }
结果
]
构造函数要用__construct() ,才可以调用到数据