PHP的命名空间中文说明:命名空间和动态语言特征
2019-09-07 阅读 : 次
(PHP 5 >= 5.3.0, PHP 7)
PHP 命名空间的实现受到其语言自身的动态特征的影响。因此,如果要将下面的代码转换到命名空间中:
Example #1 动态访问元素
example1.php:
<?php
class classname
{
function __construct()
{
echo __METHOD__,"/n";
}
}
function funcname()
{
echo __FUNCTION__,"/n";
}
const constname = "global";
$a = 'classname';
$obj = new $a; // prints classname::__construct
$b = 'funcname';
$b(); // prints funcname
echo constant('constname'), "/n"; // prints global
?> 必须使用完全限定名称(包括命名空间前缀的类名称)。注意因为在动态的类名称、函数名称或常量名称中,限定名称和完全限定名称没有区别,因此其前导的反斜杠是不必要的。
Example #2 动态访问命名空间的元素
<?php
namespace namespacename;
class classname
{
function __construct()
{
echo __METHOD__,"/n";
}
}
function funcname()
{
echo __FUNCTION__,"/n";
}
const constname = "namespaced";
include 'example1.php';
$a = 'classname';
$obj = new $a; // prints classname::__construct
$b = 'funcname';
$b(); // prints funcname
echo constant('constname'), "/n"; // prints global
/* note that if using double quotes, "//namespacename//classname" must be used */
$a = '/namespacename/classname';
$obj = new $a; // prints namespacename/classname::__construct
$a = 'namespacename/classname';
$obj = new $a; // also prints namespacename/classname::__construct
$b = 'namespacename/funcname';
$b(); // prints namespacename/funcname
$b = '/namespacename/funcname';
$b(); // also prints namespacename/funcname
echo constant('/namespacename/constname'), "/n"; // prints namespaced
echo constant('namespacename/constname'), "/n"; // also prints namespaced
?>
请一定别忘了阅读 对字符串中的命名空间名称转义的注解.
本文地址:https://www.helloaliyun.com/tutorial/300.html