2.1PHP语言的命名空间(Namespace)

1.命名空间声明

命名空间通过关键字 namespace 来声明。如果一个文件中包含命名空间,它必须在其它所有代码之前声明命名空间,除了一个以外:declare关键字。

只有以下类型的代码受命名空间的影响,它们是:类(包括抽象类和 trait)、接口、常量和函数。

<?php
//无层次结构的命名空间
namespace MyProject;

/* ... */

?>
<?php
//带层次结构的命名空间
namespace MyProject\Sub\Level;

/* ... */

?>

2.导入外部元素

可以使用 useuse constuse function 运算符导入 外部命名空间接口trait枚举常量函数 这些外部元素到当前命名空间,但并不是成为当前命名空间的成员。

use 导入的名称必须是完全限定的,前导的反斜杠是不必要的也不推荐的,不会根据当前的命名空间做相对解析。

<?php
namespace foo;

// 下面的例子与 use My\Full\NSname as NSname 相同
use My\Full\NSname;

// 导入类并别名
use My\Full\Classname as Another;

// 导入一个全局类
use ArrayObject;

// 导入常量
use const My\Full\CONSTANT;

// 导入函数
use function My\Full\functionName;

// 导入函数并别名
use function My\Full\functionName as func;

3.名称解析规则

名称描述解析规则
完全限定名称(Fully qualified name)名称中包含命名空间分隔符(\),并以命名空间分隔符(\)开始的标识符,例如 \Foo\Barnamespace\Foo 也是一个完全限定名称。完全限定名称总是会解析成原样,例如 \my\name解析为 my\name\Exception解析为 Exception
限定名称(Qualified name)名称中包含命名空间分隔符(\),但不以命名空间分隔符(\)开始的标识符,例如 Foo\Bar限定名称的解析次序为:
导入->当前命名空间
非限定名称(Unqualified name)名称中不包含命名空间分隔符(\)的标识符,例如 Foo非限定名称的解析次序为:
如果是类,导入->当前命名空间
如果是常量和函数,导入->当前命名空间->全局空间
相对名称(Relative name)名称以 namespace 关键字或 __NAMESPACE__ 魔术变量开头的标识符, 例如 namespace\Foo\Bar__NAMESPACE__ . '\MYCONST'指向 namespace 关键字和 __NAMESPACE__ 常量所在的命名空间。如果为全局,则去掉 namespace\ 开头,__NAMESPACE__ 为空。

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/php/phplang/4956.html

(0)
上一篇 2021年1月11日 08:22
下一篇 2021年2月1日 22:30

相关推荐

  • 1.7PHP语言的常量(Constant)

    1.常量声明 1.1define()函数声明法 define()函数声明的常量的值,可以是任意表达式。 1.2const关键字声明法 const关键字声明的的常量的值,有一些限制,只可以是 标量类型( int, float, bool, string)表达式、包含标量类型表达式的数组、nu…

    PHP语言教程 2021年1月7日
    0450
  • 1.8PHP语言的函数(Function)

    1.函数声明 函数在类中被称为方法(method)。 2.函数分类 2.1全局函数 名称 修饰符 全局函数 —————— 2.2成员函数 名称 修饰符 静态方法 用 static 修饰 实例方法 无 static 修饰 2.3局部函数 名称 修饰符 嵌套函数 —————— 3.参数分类 名称 修饰符 参数 ——————…

    PHP语言教程 2021年1月8日
    06360
  • 1.6PHP语言的变量(Variable)

    1.变量声明 变量在类中被称为属性(property)。 2.变量分类 2.1全局变量 名称 修饰符 全局变量 —————— 2.1成员变量 名称 修饰符 静态属性(类体内) 用static修饰 实例属性 —————— 2.2局部变量 名称 修饰符 静态变量(函数体内) 用static修饰 局部变量 —————— 参数…

    PHP语言教程 2021年1月6日
    05510

发表回复

登录后才能评论