PHP基础之命名空间4——命名空间和动态语言特征
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 /* 注意如果使用双引号, 一定要使用'namespacenameclassname'进行转义 */ $a = ’namespacenameclassname’; $obj = new $a; // prints namespacenameclassname::__construct $a = ’namespacenameclassname’; $obj = new $a; // also prints namespacenameclassname::__construct $b = ’namespacenamefuncname’; $b(); // prints namespacenamefuncname $b = ’namespacenamefuncname’; $b(); // also prints namespacenamefuncname echo constant(’namespacenameconstname’), 'n'; // prints namespaced echo constant(’namespacenameconstname’), 'n'; // also prints namespaced?>
相关文章:
1. 使用Canal实现PHP应用程序与MySQL数据库的实时数据同步2. 使用 Python 实现微信消息的一键已读的思路代码3. 一篇教程教你学会Python进制转换(十进制转二进制、八进制、十六进制)4. JSP使用过滤器防止Xss漏洞5. PHP桥接模式Bridge Pattern的优点与实现过程6. ASP下通过Adodb.Stream实现多线程下载大文件7. Vue+elementUI下拉框自定义颜色选择器方式8. React实现一个倒计时hook组件实战示例9. JavaScript快速实现一个颜色选择器10. 使用display:none时隐藏DOM元素无法获取实际宽高的解决方法

网公网安备