手机版

PHP的命名空间中文说明:使用命名空间:别名/导入

2019-09-07 阅读 :

(PHP 5 >= 5.3.0, PHP 7)

允许通过别名引用或导入外部的完全限定名称,是命名空间的一个重要特征。这有点类似于在类 unix 文件系统中可以创建对其它的文件或目录的符号连接。

所有支持命名空间的PHP版本支持三种别名或导入方式:为类名称使用别名、为接口使用别名或为命名空间名称使用别名。PHP 5.6开始允许导入函数或常量或者为它们设置别名。

在PHP中,别名是通过操作符 use 来实现的. 下面是一个使用所有可能的五种导入方式的例子:

Example #1 使用use操作符导入/使用别名


<?php
namespace foo;
use 
My/Full/Classname as Another;

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

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

// importing a function (PHP 5.6+)
use function My/Full/functionName;

// aliasing a function (PHP 5.6+)
use function My/Full/functionName as func;

// importing a constant (PHP 5.6+)
use const My/Full/CONSTANT;

$obj = new namespace/Another// 实例化 foo/Another 对象
$obj = new Another// 实例化 My/Full/Classname 对象
NSname/subns/func(); // 调用函数 My/Full/NSname/subns/func
$a = new ArrayObject(array(1)); // 实例化 ArrayObject 对象
// 如果不使用 "use /ArrayObject" ,则实例化一个 foo/ArrayObject 对象
func(); // calls function My/Full/functionName
echo CONSTANT// echoes the value of My/Full/CONSTANT
?>
注意对命名空间中的名称(包含命名空间分隔符的完全限定名称如 Foo/Bar以及相对的不包含命名空间分隔符的全局名称如 FooBar)来说,前导的反斜杠是不必要的也不推荐的,因为导入的名称必须是完全限定的,不会根据当前的命名空间作相对解析。

为了简化操作,PHP还支持在一行中使用多个use语句

Example #2 通过use操作符导入/使用别名,一行中包含多个use语句


<?php
use My/Full/Classname as AnotherMy/Full/NSname;

$obj = new Another// 实例化 My/Full/Classname 对象
NSname/subns/func(); // 调用函数 My/Full/NSname/subns/func
?>

导入操作是在编译执行的,但动态的类名称、函数名称或常量名称则不是。

Example #3 导入和动态名称


<?php
use My/Full/Classname as AnotherMy/Full/NSname;

$obj = new Another// 实例化一个 My/Full/Classname 对象
$a 'Another';
$obj = new $a;      // 实际化一个 Another 对象
?>

另外,导入操作只影响非限定名称和限定名称。完全限定名称由于是确定的,故不受导入的影响。

Example #4 导入和完全限定名称


<?php
use My/Full/Classname as AnotherMy/Full/NSname;

$obj = new Another// instantiates object of class My/Full/Classname
$obj = new /Another// instantiates object of class Another
$obj = new Another/thing// instantiates object of class My/Full/Classname/thing
$obj = new /Another/thing// instantiates object of class Another/thing
?>

Scoping rules for importing

The use keyword must be declared in the outermost scope of a file (the global scope) or inside namespace declarations. This is because the importing is done at compile time and not runtime, so it cannot be block scoped. The following example will show an illegal use of the use keyword:

Example #5 Illegal importing rule


<?php
namespace Languages;

class 
Greenlandic
{
    use 
Languages/Danish;

    ...
}
?>

Note:

Importing rules are per file basis, meaning included files will NOT inherit the parent file's importing rules.

本文标题:PHP的命名空间中文说明:使用命名空间:别名/导入 - 服务器教程_服务器技术_服务器知识_vps教程
本文地址:https://www.helloaliyun.com/tutorial/302.html

相关文章

  • CentOS 7 常用命令(系统关机、重启以及登出)

    关机:(系统的关机、重启以及登出 ) # 关闭系统(1)[root@localhost ~]# shutdown -h now # 关闭系统(2)[root@localhost ~]# init 0 # 关闭系统(3)[root@localhost ~]# telinit 0 # 按预定时间关闭系统[root@localhost...

    2019-12-07 服务器教程
  • linux重启命令 reboot与shutdown -r now的区别与联系

    在linux命令中reboot是重新启动,shutdown -r now是立即停止然后重新启动,都说他们两个是一样的,其实是有一定的区别的。shutdown命令可以安全地关闭或重启Linux系统,它在系统关闭之前给系统上的所有登录用户提示一条警告...

    2019-12-07 服务器教程
  • CentOS 7 如何使用命令重启或关机

    安装GNOME的朋友们首先切换到字符界面。切换到字符界面的方法如下: 先登陆进入系统,进入图形化界面,然后按Ctrl+Alt+F6(笔记本的是Ctrl+Alt+shift+Fn),进入字符界面。关机命令:shutdown或poweroffshutdown:shutdown -h now...

    2019-12-07 服务器教程
  • CentOS 7 正确关机重启的命令方法

    linux主要用于服务器领域,而在服务器上执行一项服务是永无止境的,除非遇到特殊情况,否则不会关机。和Windows不同,在linux系统下,很多进程是在后台执行的。在屏幕背后,可能有很多人同时在工作。如果直接按下电源的按钮,其他...

    2019-12-07 服务器教程
  • CentOS下的yum upgrade和yum update区别,没事别乱用!

    说明:生产环境对软件版本和内核版本要求非常精确,别没事有事随便的进行yum update操作!!!!!!!!!yum update: 升级所有包同时也升级软件和系统内核yum upgrade:只升级所有包,不升级软件和系统内核...

    2019-12-07 服务器教程
你可能感兴趣
热门浏览