首页 > 代码库 > 命名空间

命名空间

命名空间

◆完全限定名称(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() ,才可以调用到数据

命名空间