文档章节

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

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
粉丝 14
博文 66
码字总数 28662
作品 3
程序员
Spring框架学习之高级依赖关系配置(二)

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

Single_YAM
2017/11/04
0
0
PHP之新手自学基础知识(六)——拓展篇之命名空间

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

天谴残魂
01/09
0
0
PHP命名空间(Namespace)初探

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

豆浆Melon
2013/05/04
0
34
PHP命名空间(Namespace)的使用详解

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

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

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

杨太化
2015/02/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

[MicroPython]STM32F407开发板驱动OLED液晶屏

1.实验目的 1.学习在PC机系统中扩展简单I/O 接口的方法。 2.进一步学习编制数据输出程序的设计方法。 3.学习 F407 Micropython开发板控制OLED显示字符。 2.所需元器件 F407 Micropython开发板...

bodasisiter
30分钟前
0
0
php require和include 相对路径一个有趣的坑

以前总是被教育,不要使用相对路径,这样性能比较差,但是相对路径的问题不仅仅是性能哦,看下面这里例子 这是项目结构 .├── main.php├── t│ ├── t1.php│ └── t2.php└─...

anoty
31分钟前
15
0
x64技术之SSDT_Hook

测试环境: 虚拟机: Windows 7 64bit 过PG工具 驱动加载工具 PCHunter64 系统自带的计算器和任务管理器等 实现思路: 实际思路与win32的思路一样.都是替换SSDT表里边的函数地址.不过微软被搞怕...

simpower
32分钟前
0
0
TreeMap源码分析,看了都说好

一、简介 TreeMap最早出现在JDK 1.2中,是 Java 集合框架中比较重要一个的实现。TreeMap 底层基于红黑树实现,可保证在log(n)时间复杂度内完成 containsKey、get、put 和 remove 操作,效率很...

Java小铺
42分钟前
0
0
协变、逆变

概念 假设 A、B表示类型 ≤ 表示继承关系 f<⋅>表示类型转换 若A ≤ B,则 A是B的子类,B是A的超类 协变、逆变 什么是型变?型变(type variance)允许对类型进行子类型转换。 为了下面讲解先...

obaniu
48分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部