说说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();}}导入就相当于将目的类复制一份到当前命名空间中()。3. PHP命名空间有何实际应用?命名空间的存在是为了解决下面两个问题:1). 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。2). 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。4. 一些tips1. 同一个空间下的类直接相互直接调用,属于一家。例如 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获取客户端电脑屏幕参数的方法

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中的命名空间相关概念

相关文章:

你感兴趣的文章:

标签云: