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. 一些tips
1. 同一个空间下的类直接相互直接调用,属于一家。例如 Laravel 中的 PageController 类中可以直接写 Page::all() 这样的代码来调用 Page 这个model,因为他们俩都在顶级命名空间下。
2. 若一个类存在于非顶级命名空间中,那么它只能在调用同样是当前命名空间下的其他类才不用“引用”或“导入”,它们属于一家。任何子命名空间都是另一个命名空间,另一个容器,没有除了容器之间关系之外的任何特殊关系。
3. Laravel 采用 classmap 方式进行自动加载(autoload),PHP虽然有了命名空间这个高级特性,但是这只是逻辑关系,require 文件还是要有的。这个类和文件的对应关系就存在 /vendor/composer/autoload_classmap.php ,每次 composer dump-autoload 都会重新编译、生成。
PHP,命名空间概念
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
- 徐玮1980-我爱校园[台湾复刻版][WAV+CUE]
- 群星《极品人声-女声1号》[WAV分轨][510M]
- 欧美极美女声《 弦动你心》3CD[WAV分轨][1.7G]
- 张惠妹《歌声妹影 Live》SACD[ISO][2.9G]
- 黑豹乐队.2024-Smokescreen视陷(EP)【风华秋实】【FLAC分轨】
- 十个勤天.2024-展开一天【可能文化】【FLAC分轨】
- 王杰.1989-故事的角色(粤)【华纳】【WAV+CUE】
- 【原神】纳塔万火之瓯8个被掩藏起来的宝箱
- 【原神】胡桃突破素材(霓裳花,骗骗花)收集攻略
- 【原神】V5.1攻略 |「胡桃」一图流丨角色解析攻略
- Xbox版本的《夺宝奇兵:古老之圈》将以60FPS为目标
- 《潜行者2》将提供一个强大MOD工具包!主机PC都支持
- 《潜行者2》技术制作人:游戏将提供始终稳定的帧率!
- 《刺客信条:枭雄》雕像开放预订
- Bungie新作官方中文定名《惑星行者》 商店页面上线