文档章节

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

huangyanxiong
 huangyanxiong
发布于 2015/04/18 15:51
字数 447
阅读 15
收藏 0

什么是动态访问元素?

动态语言,是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等在结构上的变化。比如众所周知的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 避免重复一个类,函数,常量,在重复使用时,而当你要更改类,函数,常量的麻烦

© 著作权归作者所有

共有 人打赏支持
huangyanxiong
粉丝 15
博文 66
码字总数 28662
作品 3
程序员
私信 提问
Spring框架学习之高级依赖关系配置(二)

紧接着上篇内容,本篇文章将主要介绍XML Schema的简化配置和使用SpEL表达式语言来优化我们的配置文件。 一、基于XML Schema的简化配置方式 从Spring2.0以来,Spring支持使用XML Schema来简化...

Single_YAM
2017/11/04
0
0
PHP命名空间(Namespace)初探

探完闭包[查看],再探命名空间。 对于命名空间,官方文档已经说得很详细[查看],我在这里做了一下实践和总结。 命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相...

豆浆Melon
2013/05/04
0
34
PHP之新手自学基础知识(六)——拓展篇之命名空间

命名空间概述 什么是命名空间?从广义上来说,命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念。例如,在操作系统中目录用来将相关文件分组,对于目录中的文件来说,它就扮...

天谴残魂
2018/01/09
0
0
PHP命名空间(Namespace)的使用详解

对于命名空间,官方文档已经说得很详细[查看],我在这里做了一下实践和总结。 命名空间一个最明确的目的就是解决重名问题,PHP中不允许两个函数或者类出现相同的名字,否则会产生一个致命的错...

Surjur
2015/02/12
0
0
【总结—.Net Framework集合类】

写在前面: 最近在学习.Net的集合框架,看了许多博文,也看了书,总感觉不是很明白。心里疑惑很多,每天郁闷度日。如果学技术时感到很痛苦,有两种可能,其一是学习方法不对;其二是真的不适...

杨太化
2015/02/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周四乱弹 —— 我想过年请假提前回家两天

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @clouddyy :#每日一歌# 分享王力宏的单曲《爱错》 《爱错》- 王力宏 手机党少年们想听歌,请使劲儿戳(这里) @Caremorele :这几天起床有点...

小小编辑
32分钟前
8
1
Cookie 显示用户上次访问的时间

import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServlet;import javax.serv......

gwl_
今天
1
0
网络编程

第14天 网络编程 今日内容介绍  网络通信协议  UDP通信  TCP通信 今日学习目标  能够辨别UDP和TCP协议特点  能够说出UDP协议下两个常用类名称  能够说出TCP协议下两个常用类名称...

stars永恒
今天
2
0
二进制相关

二进制 众所周知计算机使用的是二进制,数字的二进制是如何表示的呢? 实际就是逢二进一。比如 2 用二进制就是 10。那么根据此可以推算出 5的二进制等于 10*10+1 即为 101。 在计算机中,负数以...

NotFound403
昨天
3
0
day22:

1、写一个getinterface.sh 脚本可以接受选项[i,I],完成下面任务: 1)使用格式:getinterface.sh [-i interface | -I ip] 2)当用户使用-i选项时,显示指定网卡的IP地址;当用户使用-I选项...

芬野de博客
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部