PHP命名空间入门
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP命名空间入门,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3001字,纯文字阅读大概需要5分钟。
内容图文
![PHP命名空间入门](/upload/InfoBanner/zyjiaocheng/154/479fb848ce474fdaa317702bfcfaf6e9.jpg)
<spanMicrosoft YaHei'; font-size:12px">“什么是命名空间?从广义上来说,命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念。例如,在操作系统中目录用来将相关文件分组,对于目录中的文件来说,它就扮演了命名空间的角色。具体举个例子,文件 foo.txt 可以同时在目录/home/greg 和 /home/other 中存在,但在同一个目录中不能存在两个 foo.txt 文件。另外,在目录 /home/greg 外访问 foo.txt 文件时,我们必须将目录名以及目录分隔符放在文件名之前得到 /home/greg/foo.txt。这个原理应用到程序设计领域就是命名空间的概念。”——命名空间概述
2. PHP命名空间该如何理解?
<spanMicrosoft YaHei'; font-size:16px; line-height:2; white-space:normal">从本质上讲,命名空间就是一个容器,这个容器内我们可以放入类、函数和变量,他们在同一命名空间内可以无条件相互访问。在命名空间之外,就必须引用或者导入其他命名空间,才能调用它们包含的这些项。
<spanMicrosoft YaHei'; color:#E56600; font-size:16px; line-height:2; white-space:normal">命名空间跟shell中的文件目录的概念是一样一样的。在当前目录下可以直接用文件名访问所有文件,如果需要访问其他目录下的文件,就需要输入相对路径或绝对路径。
<spanMicrosoft YaHei'; font-size:16px; white-space:normal; line-height:48px">引用方式:
<spanMicrosoft YaHei'; font-size:16px; white-space:normal; line-height:48px">
namespace foo; class Foo { public function foo() { return \top\namespace\bar\Bar::fuck(); } }<spanMicrosoft YaHei'; font-size:16px; white-space:normal; line-height:48px">导入方式:
namespace foo; use top\namespace\bar\Bar; class Foo { public function foo() { return Bar::fuck(); } }
<spanMicrosoft YaHei'; font-size:16px; white-space:normal; line-height:48px">导入就相当于将目的类复制一份到当前命名空间中。
3. PHP命名空间有何实际应用?
<spanMicrosoft YaHei'; font-size:16px">命名空间的存在是为了解决下面两个问题:
<spanMicrosoft YaHei'; font-size:16px">1. 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
<spanMicrosoft YaHei'; font-size:16px">2. 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。
<spanMicrosoft YaHei'; font-size:16px">目前非常流行的 Composer 就是一个基于命名空间的包管理器/依赖管理器,同样,Laravel 能达到今天的成功,很大程度上也是因为PHP5.3的普及,生恰逢时。你可以在 https://packagist.org/ 上下载到各种 composer 包,类似于 yum、npm或者gem。
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教程有兴趣的朋友有所帮助。
内容总结
以上是互联网集市为您收集整理的PHP命名空间入门全部内容,希望文章能够帮你解决PHP命名空间入门所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。