命名空间-动态访问元素(二)

什么是动态访问元素?

动态语言,是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等在结构上的变化。比如众所周知的ECMAScript(JavaScript)便是一个动态语言。除此之外如Ruby、Python等也都属于动态语言,而C、C++等语言则不属于动态语言。

对象,函数,常量的动态调用


class classname{
        function __construct(){
            echo __METHOD__;
        }


}
function  funcname(){
    echo __FUNCTION__;
}
const constname = "global";
$a = 'classname';
$obj = new $a;
$b = 'funcname';
$b();
echo constant('constname');



命名空间的动态访问元素:


namespace newnamespace;
class classname{
    function __construct(){
        echo __METHOD__;
    }
}
function funcname(){
    echo __FUNCTION__;
}
const constname = 1;

//这里需要注意反斜杠的使用\,如果使用""反斜杠会后面的字符转义,比如,在这个例子中如果使用双引号,则\newnamespace的\n会被转义,代表unxi
//下的换行符,因此建议使用单引号http://php.net/manual/zh/language.namespaces.faq.php#language.namespaces.faq.shortname1
$a = '\newnamespace\classname';
new $a;
$a = 'newnamespace\classname';
$b = 'newnamespace\funcname';
$b();
$c = 'newnamespace\constname';
echo constant($c);


需要注意的问题:

1:在动态调用命名空间时,反斜杠的转义问题,在动态调用命名空间时建议使用单引号

2:必须使用完全限定名称(包括命名空间前缀的类名称)。注意因为在动态的类名称、函数名称或常量名称中,限定名称和完全限定名称没有区别,因此其前导的反斜杠是不必要的。 (官方)


动态访问元素应用环境: 

1 根据程序的上下文来决定使用不同的类,函数,常量 

2 避免重复一个类,函数,常量,在重复使用时,而当你要更改类,函数,常量的麻烦

转载于:https://my.oschina.net/freax/blog/403340

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值