说说PHP中的命名空间相关概念

1. PHP中的命名空间是什么?



什么是命名空间?“从广义上来说,命名空间是一种封装事物的方法。在非常多地方都能够见到这样的抽象概念。

比如。在操作系统中文件夹用来将相关文件分组。对于文件夹中的文件来说,它就扮演了命名空间的角色。详细举个样例,文件 foo.txt 能够同一时候在文件夹/home/greg 和 /home/other 中存在。但在同一个文件夹中不能存在两个 foo.txt 文件。

另外。在文件夹 /home/greg 外訪问 foo.txt 文件时,我们必须将文件夹名以及文件夹分隔符放在文件名称之前得到 /home/greg/foo.txt。这个原理应用到程序设计领域就是命名空间的概念。”――命名空间概述



2. PHP命名空间该怎样理解?



从本质上讲,命名空间就是一个容器,这个容器内我们能够放入类、函数和变量。他们在同一命名空间内能够无条件相互訪问。

在命名空间之外,就必须引用或者导入其它命名空间。才干调用它们包括的这些项。

命名空间跟shell中的文件文件夹的概念是一样一样的。在当前文件夹下能够直接用文件名称訪问全部文件,假设须要訪问其它文件夹下的文件,就须要输入相对路径或绝对路径。



引用方式:

namespace foo;

 class Foo {   

         public function foo()   

             {        

                  return \top\namespace\bar\Bar::fuck();    

              }

             }

导入方式:

namespace foo; 

use top\namespace\bar\Bar; 

 class Foo {

        public function foo() 

            {        return Bar::fuck();  

            }

           }

导入就相当于将目的类复制一份到当前命名空间中(http://www.lai18.com/content/368824.html)。



3. PHP命名空间有何实际应用?



命名空间的存在是为了解决以下两个问题:



1). 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。



2). 为非常长的标识符名称(一般是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源码的可读性。

4. 一些tips



1. 同一个空间下的类直接相互直接调用,属于一家。比如 Laravel 中的 PageController 类中能够直接写 Page::all() 这种代码来调用 Page 这个model。由于他们俩都在顶级命名空间下。



2. 若一个类存在于非顶级命名空间中,那么它仅仅能在调用相同是当前命名空间下的其它类才不用“引用”或“导入”。它们属于一家。不论什么子命名空间都是还有一个命名空间。还有一个容器,没有除了容器之间关系之外的不论什么特殊关系。

3. Laravel 採用 classmap 方式进行自己主动载入(autoload)。PHP尽管有了命名空间这个高级特性,可是这仅仅是逻辑关系,require 文件还是要有的。这个类和文件的相应关系就存在 /vendor/composer/autoload_classmap.php ,每次 composer dump-autoload 都会又一次编译、生成。





延伸阅读

《PHP基础知识总结》系列技术文章整理收藏 

总结PHP基础知识。对刚開始学习的人还是高手都值得參考巩固。

1PHP检查库或函数是否可用的方法

2关于PHP5 Session生命周期介绍

3PHP页面和Mysql数据库的转UTF8编码问题总结

4WAMP5的配置问题

5揭秘PHP深受Web开发人员喜爱的原因

6PHP中浮点数计算比較及取整不准确的解决方法

7php获取client电脑屏幕參数的方法

8对于PHP中命名空间概念的入门理解

9php5.4下面版本号json不支持不转义内容中文的解决方法

10PHP相关面试中最常常涉及的12个问题

11PHP函数extension_loaded()使用方法实例

12关于PHP浮点数精度损失问题

13PHP中使用正則表達式提取中文实现笔记

14PHP中使用break跳出多重循环代码实例

15php实现遍历文件夹并删除指定文件里指定内容

16PHP中的命名空间相关概念浅析

1750个提高PHP运行效率的技巧 【转载】

18php数组函数序列之sort() 对数组的元素值进行升序

19PHP实现的各种中文编码转换类分享

20PHP使用mb_substr()解决中文字符串截取乱码问题

21php中get_object_vars()方法使用方法实例

22PHP结合HTML5使用FormData对象提交表单及上传图片

23php使用parse_url和parse_str解析URL

24PHP实现加密的几种方式介绍

25PHP 魔术变量和魔术函数具体解释

26PHP中return使用方法具体解读

27Java和PHP在Web开发方面对照分析

28PHP获取POST数据的几种方法汇总

29令PHP刚開始学习的人的困惑的10个知识点

30PHP魔术方法使用总结

31PHP:40+开发工具推荐

32php中利用header设置content-type和常见文件类型的content-type

说说PHP中的命名空间相关概念的更多相关文章

  1. C语言中的命名空间

    C语言中的命名空间 命名空间是为了解决 "在相同作用域内如何区分 相同的标识符". 说明: ①只有在相同作用域的情况下才能使用到命名空间去区分标识符,在嵌套的作用域.不同的作用域区 ...

  2. 替换 wcf 消息传输中的 命名空间

    替换 wcf 消息传输中的 命名空间,http://vanacosmin.ro/Articles/Read/WCFEnvelopeNamespacePrefix

  3. JavaScript中创建命名空间

    引用:http://ourjs.com/detail/538d8d024929582e6200000c   在JavaScript中全局变量经常会引起命名冲突,甚至有时侯重写变量也不是按照你想像中的顺 ...

  4. Namespacing in PHP (php 中使用命名空间)

    最近学习一下php的命名空间,中文文档不多,搜到一篇英文的,讲的还蛮系统的,特此翻译一下,以备以后查阅,大家有什么高见或更深刻或者 更悟透的见解希望能不吝赐教,晚辈感激不尽. 原文: http://c ...

  5. 在JavaScript中创建命名空间的几种写法

    在JavaScript中全局变量经常会引起命名冲突,甚至有时侯重写变量也不是按照你想像中的顺序来的,可以看看下面的例子: var sayHello = function() { return 'Hel ...

  6. js中创建命名空间的几种写法

    在JavaScript中全局变量经常会引起命名冲突,甚至有时侯重写变量也不是按照你想像中的顺序来的,可以看看下面的例子: var sayHello = function() { return 'Hel ...

  7. Entity Framework中实体模型命名空间的问题

    在添加一个实体数据模型的时候(就是扩展名为edmx那位)属性里明明设置了自己的命名空间,但是后台的Designer.cs命名空间生成规则却是项目的默认命名空间加edmx文件所在文件夹的名称, 是BUG ...

  8. 解读Python编程中的命名空间与作用域

    变量是拥有匹配对象的名字(标识符).命名空间是一个包含了变量名称们(键)和它们各自相应的对象们(值)的字典.一个Python表达式可以访问局部命名空间和全局命名空间里的变量.如果一个局部变量和一个全局 ...

  9. PHP中的命名空间(namespace)及其使用详解

    PHP中的命名空间(namespace)及其使用详解 晶晶 2年前 (2014-01-02) 8495次浏览 PHP php自5.3.0开始,引入了一个namespace关键字以及__NAMESPAC ...

随机推荐

  1. 【MPI】并行求和

    比较简单的并行求和 读入还是串行的 而且无法处理线程数无法整除数据总长度的情况 主要用到了MPI_Bcast MPI_Scatter MPI_Reduce typedef long long __in ...

  2. bzoj 3594

    题解见: http://blog.csdn.net/qpswwww/article/details/44407371 收获: 1.对于一个问题,看似不可做,但一定存在一定特点,我们要做的就是找出一些特 ...

  3. IndiaHacks 2016 - Online Edition (Div. 1 + Div. 2) A. Bear and Three Balls 水题

    A. Bear and Three Balls 题目连接: http://www.codeforces.com/contest/653/problem/A Description Limak is a ...

  4. WinForm中DataGridView验证单元格输入的是数字

    转载:http://www.cnblogs.com/ganqiyin/archive/2013/02/18/2915491.html 事件:DataGridView验证单元格输入的是数字,DataGr ...

  5. ecmall用户登录后自动退出解决方法

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

  6. SharePoint 2013 代码创建应用程序目录(App Catalog)

    众所周知,SharePoint App是2013版本的一大特色,那么,关于App的分发有几种方式呢?SharePoint给我们提供了两种方式,一种是上载到SharePoint应用商店,另一种是在本地S ...

  7. Node 多进程并发控制小模块 - lockman

    介绍 lockman 是一个用于多进程的并发控制锁, 类似一些语言中(比如 C#)的 lock 关键字可以用来确保代码块完成运行,而不会被其他进程中断.它可以把一段代码定义为互斥段(critical ...

  8. VS收集插件

    有空再做细细解说,大部分童鞋应该都在用1.Achievements这个就是传说中的VS成就插件了,一边编程一边解锁成就 2.Spell Checker拼写检查插件,这个插件能够实时帮你检查注释或字符串 ...

  9. https://github.com/wytings

    博客中写了很多比较杂乱的东西,有时候可能一时看不出效果,毕竟代码问题确实是 “Talk is cheap. Show me the code” 所以,就开了一个github,把一些日常开发和使用的工具 ...

  10. docker学习总结--安装、卸载

    参考:http://blog.csdn.net/u012562943/article/details/50463400 https://docs.docker.com/engine/getstarte ...