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 相关文章推荐
不用数据库的多用户文件自由上传投票系统(2)
Oct 09 PHP
一些常用的php函数
Dec 06 PHP
腾讯QQ php程序员面试题目整理
Jun 08 PHP
PHP类的静态(static)方法和静态(static)变量使用介绍
Feb 19 PHP
PHP中extract()函数的妙用分析
Jul 11 PHP
探讨php中遍历二维数组的几种方法详解
Jun 08 PHP
PHP实现获取FLV文件的时间
Feb 10 PHP
Yii配置与使用memcached缓存的方法
Jul 13 PHP
PHP实现四种基础排序算法的运行时间比较(推荐)
Aug 11 PHP
PHP实现截取中文字符串不出现?号的解决方法
Dec 29 PHP
win7 wamp 64位 php环境开启curl服务遇到的问题及解决方法
Sep 16 PHP
PHP基于curl实现模拟微信浏览器打开微信链接的方法示例
Feb 15 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 调用远程url的六种方法小结
2009/11/02 PHP
php 短链接算法收集与分析
2011/12/30 PHP
php中使用preg_replace函数匹配图片并加上链接的方法
2013/02/06 PHP
php类声明和php类使用方法示例分享
2014/03/29 PHP
Thinkphp搭建包括JS多语言的多语言项目实现方法
2014/11/24 PHP
如何使用PHP给图片加水印
2016/10/12 PHP
php记录搜索引擎爬行记录的实现代码
2018/03/02 PHP
JS获取IUSR_机器名和IWAM_机器名帐号的密码
2006/12/06 Javascript
初窥JQuery(一)jquery选择符 必备知识点
2010/11/25 Javascript
滚动图片效果 jquery实现回旋滚动效果
2013/01/08 Javascript
js获取dom的高度和宽度(可见区域及部分等等)
2013/06/13 Javascript
javascript格式化json显示实例分析
2015/04/21 Javascript
AngularJS实现Model缓存的方式
2016/02/03 Javascript
第一次接触神奇的Bootstrap菜单和导航
2016/08/01 Javascript
原生js的RSA和AES加密解密算法
2016/10/08 Javascript
浅谈jquery选择器 :first与:first-child的区别
2016/11/20 Javascript
javaScript+turn.js实现图书翻页效果实例代码
2017/02/16 Javascript
jQuery插件ImgAreaSelect实现头像上传预览和裁剪功能实例讲解一
2017/05/26 jQuery
实例讲解DataTables固定表格宽度(设置横向滚动条)
2017/07/11 Javascript
Vue 使用中的小技巧
2018/04/26 Javascript
15个顶级开源JavaScript框架和库
2018/10/10 Javascript
vue-cli 3.x配置跨域代理的实现方法
2019/04/12 Javascript
微信小程序封装多张图片上传api代码实例
2019/12/30 Javascript
详解Vue3中对VDOM的改进
2020/04/23 Javascript
[16:04]DOTA2海涛带你玩炸弹 9月5日更新内容详解
2014/09/05 DOTA
Python中使用socket发送HTTP请求数据接收不完整问题解决方法
2015/02/04 Python
Python中利用Scipy包的SIFT方法进行图片识别的实例教程
2016/06/03 Python
详解python中sort排序使用
2019/03/23 Python
Python使用random模块生成随机数操作实例详解
2019/09/17 Python
聊聊Python pandas 中loc函数的使用,及跟iloc的区别说明
2021/03/03 Python
Champion官网:美国冠军运动服装
2017/01/25 全球购物
佳能法国商店:Canon法国
2019/02/14 全球购物
95%的面试官都会问到的50道Java线程题,附答案
2012/08/03 面试题
高中学生干部学习的自我评价
2014/02/21 职场文书
金融学专业大学生职业生涯规划
2014/03/07 职场文书
Python 全局空间和局部空间
2022/04/06 Python