一些关于命名空间的学习总结:php
1、概述函数
具体举个例子,文件 foo.txt 能够同时在目录/home/greg 和 /home/other 中存在,但在同一个目录中不能存在两个 foo.txt 文件。另外,在目录 /home/greg 外访问 foo.txt 文件时,咱们必须将目录名以及目录分隔符放在文件名以前获得 /home/greg/foo.txt。这个原理应用到程序设计领域就是命名空间的概念。学习
为解决spa
2、定义命名空间.net
虽然任意合法的PHP代码均可以包含在命名空间中,但只有如下类型的代码受命名空间的影响,它们是:类(包括抽象类和traits)、接口、函数和常量。命名空间经过关键字namespace 来声明。设计
1.若是一个文件中包含命名空间,它必须在其它全部代码以前声明命名空间,除了一个之外:declare关键字。code
2.另外,与PHP其它的语言特征不一样,同一个命名空间能够定义在多个文件中,即容许将同一个命名空间的内容分割存放在不一样的文件中。blog
3、同一个文件中定义多个命名空间接口
1.字符串
2.
3.
四:使用命名空间:基础
类比文件系统的访问:
使用示例:
<?php
namespace Foo\Bar;
include 'file1.php';
const FOO = 2;
function foo() {}
class foo
{
static function staticmethod() {}
}
/* 非限定名称 */
foo(); // 解析为 Foo\Bar\foo resolves to function Foo\Bar\foo
foo::staticmethod(); // 解析为类 Foo\Bar\foo的静态方法staticmethod。resolves to class Foo\Bar\foo, method staticmethod
echo FOO; // resolves to constant Foo\Bar\FOO
/* 限定名称 */
subnamespace\foo(); // 解析为函数 Foo\Bar\subnamespace\foo
subnamespace\foo::staticmethod(); // 解析为类 Foo\Bar\subnamespace\foo,
// 以及类的方法 staticmethod
echo subnamespace\FOO; // 解析为常量 Foo\Bar\subnamespace\FOO
/* 彻底限定名称 */
\Foo\Bar\foo(); // 解析为函数 Foo\Bar\foo
\Foo\Bar\foo::staticmethod(); // 解析为类 Foo\Bar\foo, 以及类的方法 staticmethod
echo \Foo\Bar\FOO; // 解析为常量 Foo\Bar\FOO
?>
二、
注意访问任意全局类、函数或常量,均可以使用彻底限定名称,例如 \strlen() 或 \Exception 或 \INI_ALL。
五:命名空间和动态语言特性
略...用到再研究...
六:__namespace__关键字
常量__NAMESPACE__
的值是包含当前命名空间名称的字符串。在全局的,不包括在任何命名空间中的代码,它包含一个空的字符串。