-----------------------------------------------------------------------------------------------

/*
|----------------------------------------
|一.动态访问命名空间的元素
|@黑眼诗人 <www.farwish.com>
|----------------------------------------
*/
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;
}

Link: http://www.cnblogs.com/farwish/p/3913784.html

@黑眼诗人 <www.farwish.com>

[namespace]PHP命名空间的动态访问 & 使用技巧的更多相关文章

  1. nginx配置静态资源与动态访问分离【转】

    在前面的博客中<说说 NGINX 的配置及优化>的 2.5 小节里面,提到 location 模块是 nginx 中用的最多的,也是最重要的模块,负载均衡.反向代理.虚拟域名等都与它相关. ...

  2. 十九、.net core使用SoapCore开发webservice接口,以及使用HttpClientFactory动态访问webservice接口

    使用SoapCore实现在.net core平台下开发webservice:以及使用HttpClientFactory动态访问webservice. 首先,需要在包项目下面引用SoapCore: 然后 ...

  3. Django 中 app_name (应用命名空间) 和 namespace (实例命名空间) 的区别

    转自:https://www.jianshu.com/p/404500a0408a 补充理解: 先把官网上对应用命名空间(app_name)和实例命名空间(namespace)的解释贴上: app_n ...

  4. php namespace use 命名空间

    也可以参考PHP官网说明:http://php.net/manual/en/language.namespaces.importing.php namespace(以下简称ns).在定义了一个ns之后 ...

  5. 使用XLinq.XElement读取带Namespace(命名空间)的XML

    简介 本文主要介绍通过XELemet去读取含有namespaces(xmlns)的XML,这也是偶然间发现这个问题的,一个群里的小伙伴突然问起这个,以此记录一下. 背景 一个XML文档可能包括来自多个 ...

  6. [namespace]PHP命名空间的使用基础

    -------------------------------------------------------------------------------------------------- 一 ...

  7. Calling the Web Service dynamically (.NET 动态访问Web Service)

    针对.NET平台下的WebService访问,为达到不添加引用的情况下,动态调用外部服务. 主体方法: public class WebServiceHelper { //Calling the We ...

  8. C# 动态访问webserver 帮助类

    /* 调用方式 * string url = "http://www.webservicex.net/globalweather.asmx" ; * string[] args = ...

  9. Objective-C 的动态提示和技巧

    过去的几年中涌现了大量的Objective-C开发者.有些是从动态语言转过来的,比如Ruby或Python,有些是从强类型语言转过来的,如Java或C#,当然也有直接以Objective-C作为入门语 ...

随机推荐

  1. 第6章 静态路由和动态路由(4)_OSPF动态路由协议

    6. OSPF动态路由协议 6.1 OSPF协议(Open Shortest Path First,OSPF开放式最短路径优先协议) (1)通过路由器之间通告链路的状态来建立链路状态数据库,网络中所有 ...

  2. C# 自己动手实现Spy++(一)

    因为项目要用到获取其他程序的标题,就想到了用Spy++,但是它是一个工具,并没有C#的源代码,所以就想探索下他的原理,网上搜索了下spy++的源代码,找到了一篇:http://blog.csdn.ne ...

  3. better-scroll高度问题

    better-scroll无法滚动主要2方面原因,1)层级关系.2)高度问题

  4. python 打印调用栈

    import traceback def BBQ(): traceback.print_stack() 引入 traceback 包,在某个函数中执行 traceback.print_stack().

  5. CentOS7中替换安装python3.7.0

    python3.7的安装包可从官网下载上传到主机,也可以用wget直接下载. [root@xxx ~]# cd /usr/local/src/[root@xxx src]# wget https:// ...

  6. 微信小程序笔记<一>初识小程序

    一.IDE界面介绍 编辑界面 调试界面 项目管理界面 左侧工具介绍 二.项目文件类型及结构介绍 这是一个初始小程序的项目目录,其中涉及四种文件类型: *.js:JavaScript文件(JavaScr ...

  7. LeetCode 7 Reverse Integer & int

    Reverse Integer 想用余10直接算,没想到 -123%10 是 7, 原因 -123-(-123//10*10) r=a-n*[a/n] 以上,r是余数,a是被除数,n是除数. 唯一不同 ...

  8. [转]C# 安装与部署

    部署 Windows 应用程序 本演练演示为启动记事本的 Windows 应用程序创建一个安装程序的过程.在本演练中,您将首先创建一个 Windows 应用程序,然后创建一个安装程序:以便在安装过程中 ...

  9. 代码:PC 链接列表面板border的一种做法(每行之间有分割线)

    PC 链接列表面板,border的一种做法 做页面经常遇到一种问题,上面是标题,下面是单行链接列表.为了保证后台套页面方便,所有列表项必须完全一样.但我们无法解决第一行或最后一行多出来的分割线. 使用 ...

  10. IP与十进制相互转化

    def ip2Long(ip: String): Long = { val fragments = ip.split("[.]")  var ipNum = 0L  for (i ...