PHP命名空间(namespace)的动态访问及使用技巧


Posted in PHP onAugust 18, 2014

PHP的命名空间(namespace)是PHP 5.3中加入最重要的一个新特性,这个概念在C#中已经很早就有了,php中的namespace其实和c#的概念是一样的。

一.动态访问命名空间的元素

namespace me\poet;
function test()
{
  echo '1111';
}
$fun = 'test';//不能这么用,最后$fun()无法动态调用到test():Fatal error: Call to undefined function test()
$fun = '\me\poet\test';//正确
//$fun = 'me\poet\test';//正确
$fun();

也就是说,动态调用必须是 限定名称 或 完全限定名称(概念参考:PHP命名空间的使用基础)

二.魔术常量 和 操作符

namespace me\poet;
function test()
{
  echo '1';
}
echo __NAMESPACE__; //魔术常量:命名空间的名称(输出 me\poet)
//namespace操作符:显式访问当前命名空间或子命名空间中的元素,等价于类中的self操作符
\me\poet\test();
namespace\test();
//上两行代码等价。

三.别名、导入 和 全局空间(含多个例子)

namespace ws\weichen\www;
use ws\weichen\www as poet;//定义别名poet
//use ws\weichen\www; //不加as,则取最后的作为别名(www)
function demo()
{
  echo '1';
}
\ws\weichen\www\demo();
poet\demo();
//www\demo();//不加as的情况,则这样调用

以上三行代码效果一样。
按规则(ws\weichen\www)命名的好处:若更换域名,只要把前缀名称改了就可以,不影响后面代码中别名www的使用。

/* 导入 */
include 'hello.class.php';
use \ws\weichen\www;
use \Hello;
/*--------------------------------------------------------*/
/* 支持多个use语句 */
use \nihao\shijie as hello, \ws\weichen\www;
/*--------------------------------------------------------*/
/* 全局空间:反斜线调用 */
namespace A\B\C;
//这个函数是 A\B\C\fopen();
function fopen()
{
  $f = \fopen('demo.txt');//调用全局fopen函数
  return $f;
}
PHP 相关文章推荐
PHP数组内存耗用太多问题的解决方法
Apr 05 PHP
phpMyAdmin自动登录和取消自动登录的配置方法
May 12 PHP
PHP页面实现定时跳转的方法
Oct 31 PHP
php动态生成缩略图并输出显示的方法
Apr 20 PHP
PHP设计模式之适配器模式代码实例
May 11 PHP
分享php分页的功能模块
Jun 16 PHP
php商品对比功能代码分享
Sep 24 PHP
php读取qqwry.dat ip地址定位文件的类实例代码
Nov 15 PHP
php实现通过soap调用.Net的WebService asmx文件
Feb 27 PHP
PHP闭包定义与使用简单示例
Apr 13 PHP
Laravel框架实现简单的学生信息管理平台案例
May 07 PHP
TP5框架实现上传多张图片的方法分析
Mar 29 PHP
PHP命名空间(namespace)的使用基础及示例
Aug 18 #PHP
mac环境中使用brew安装php5.5.15
Aug 18 #PHP
PHP 正则表达式常用函数
Aug 17 #PHP
PHP常用正则表达式集锦
Aug 17 #PHP
学习php中的正则表达式
Aug 17 #PHP
php实现的DateDiff和DateAdd时间函数代码分享
Aug 16 #PHP
php出现内存位置访问无效错误问题解决方法
Aug 16 #PHP
You might like
php读取3389的脚本
2014/05/06 PHP
Windows Server 2008 R2和2012中PHP连接MySQL过慢的解决方法
2016/07/02 PHP
php opendir()列出目录下所有文件的实例代码
2016/10/02 PHP
浅谈PHP定义命令空间的几个注意点(推荐)
2016/10/29 PHP
laravel 实现划分admin和home 模块分组
2019/10/15 PHP
Json对象与Json字符串互转(4种转换方式)
2013/03/27 Javascript
javascript简单实现表格行间隔显示颜色并高亮显示
2013/11/29 Javascript
js实现div的切换特效上一个下一个
2014/02/11 Javascript
JSON字符串和对象之间的转换详解
2015/05/26 Javascript
JavaScript中Number对象的toFixed() 方法详解
2016/09/02 Javascript
详谈Ajax请求中的async:false/true的作用(ajax 在外部调用问题)
2017/02/10 Javascript
最常用的jQuery表单验证(简单)
2017/05/23 jQuery
javascript中神奇的 Date对象小结
2017/10/12 Javascript
vue.js 微信支付前端代码分享
2018/02/10 Javascript
React Form组件的实现封装杂谈
2018/05/07 Javascript
QQ跳转支付宝并自动领红包脚本(最新)
2018/06/22 Javascript
使用JS代码实现俄罗斯方块游戏
2018/08/03 Javascript
详解JavaScript对数组操作(添加/删除/截取/排序/倒序)
2019/04/28 Javascript
vue+Element实现搜索关键字高亮功能
2019/05/28 Javascript
javascript触发模拟鼠标点击事件
2019/06/26 Javascript
对layer弹出框中icon数字参数的说明介绍
2019/09/04 Javascript
[01:03:27]Optic vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python 网络编程起步(Socket发送消息)
2008/09/06 Python
Python使用combinations实现排列组合的方法
2018/11/13 Python
pytorch实现保证每次运行使用的随机数都相同
2020/02/20 Python
Python批量处理csv并保存过程解析
2020/05/16 Python
python字符串的index和find的区别详解
2020/06/20 Python
Python容器类型公共方法总结
2020/08/19 Python
产品质量保证书
2014/04/29 职场文书
家具公司总经理岗位职责
2014/07/08 职场文书
人事局接收函
2015/01/31 职场文书
会计工作态度自我评价
2015/03/06 职场文书
学生退学证明
2015/06/23 职场文书
幼儿教师远程研修感悟
2015/11/18 职场文书
青年岗位能手事迹材料(2016推荐版)
2016/03/01 职场文书
Python中的程序流程控制语句
2022/02/24 Python