php 命名空间namespace use

来源:互联网 发布:老公家暴 知乎 编辑:程序博客网 时间:2024/04/28 13:58

1、用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。

2、为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。

只有三种类型的代码受命名空间的影响,它们是:类,函数和常量。

file1.php:
<?php
namespace foo;
function bar()
{
    echo 'from bar';

}
?>
file2.php:
<?php
fOo\bar() // output: from bar
?>

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

PHP 命名空间支持 有两种使用别名或导入方式:为类名称使用别名,或为命名空间名称使用别名。注意PHP不支持导入函数或常量。

在PHP中,别名是通过操作符use 来实现的.

PHP命名空间支持三种别名方式(或者说引用):

1:为一个类取别名

2:为一个接口取别名

3:为一个命名空间取别名

这三种方式都是用 use 关键字来完成。下面是三种别名的分别举例:

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

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

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

$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 对象
?>

参考文档http://www.php.net/manual/zh/language.namespaces.rationale.php

0 0
原创粉丝点击