命名空间

一些关于命名空间的学习总结:php

 

1、概述函数

具体举个例子,文件 foo.txt 能够同时在目录/home/greg/home/other 中存在,但在同一个目录中不能存在两个 foo.txt 文件。另外,在目录 /home/greg 外访问 foo.txt 文件时,咱们必须将目录名以及目录分隔符放在文件名以前获得 /home/greg/foo.txt。这个原理应用到程序设计领域就是命名空间的概念。学习

 

为解决spa

  1. 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
  2. 为很长的标识符名称(一般是为了缓解第一类问题而定义的)建立一个别名(或简短)的名称,提升源代码的可读性。

 

2、定义命名空间.net

  虽然任意合法的PHP代码均可以包含在命名空间中,但只有如下类型的代码受命名空间的影响,它们是:类(包括抽象类和traits)、接口、函数和常量。命名空间经过关键字namespace 来声明。设计

1.若是一个文件中包含命名空间,它必须在其它全部代码以前声明命名空间,除了一个之外:declare关键字。code

2.另外,与PHP其它的语言特征不一样,同一个命名空间能够定义在多个文件中,即容许将同一个命名空间的内容分割存放在不一样的文件中。blog

 

 3、同一个文件中定义多个命名空间接口

1.字符串

 

2.

3.

 

 

 四:使用命名空间:基础

 类比文件系统的访问:

  1. 相对文件名形式如foo.txt。它会被解析为 currentdirectory/foo.txt,其中 currentdirectory 表示当前目录。所以若是当前目录是 /home/foo,则该文件名被解析为/home/foo/foo.txt
  2. 相对路径名形式如subdirectory/foo.txt。它会被解析为 currentdirectory/subdirectory/foo.txt
  3. 绝对路径名形式如/main/foo.txt。它会被解析为/main/foo.txt

使用示例:

<?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__的值是包含当前命名空间名称的字符串。在全局的,不包括在任何命名空间中的代码,它包含一个空的字符串。