He110 发表于 2016-11-27 10:21

PHP 笔记——命名空间

本帖最后由 He110 于 2016-11-27 10:23 编辑

觉得排版难看的可以在文末下载 Markdown 文档观看,观看本文建议先观看其他笔记——PHP 环境配置、PHP 基础、PHP 数组、面向对象基础

概念

为了区分名字相同含义不同的函数、变量、常量等设立的功能

基本应用

使用 namespace 声明命名空间, namespace 需要写在 PHP 脚本的顶部, 必须是第一个 PHP 指令, 不要在前面出现非 PHP 代码、HTML 或空格。
命名空间可以在一个页面中出现多个, 从当前 namespace 到下一个 namespace 就是当前命名空间的范围, 但是建议在一个文件中只出现一个命名空间, 避免混乱

跨命名空间调用元素

不同命名空间是不能直接互相访问的, 需要使用 “空间名\元素名” 的方式调用, 如:
namespace Demo1
    var $name;
namespace Demo2
    echo \Demo1\$name;

子空间和公共空间

PHP 中的命名空间和文件系统很像, 可以定义子空间来描述空间之间的所属关系, 可以使用多层, 一般为公司域名倒置 + 项目名称, 如: xyz\hdiot\www\blog
没有设定命名空间的元素均属于公共空间, 在命名空间中调用默认空间中的元素的语法为: \元素名, 如: \Demo();

命名空间的名称和术语


[*]非限定名称: 不包含前缀的类名称($u = new User();), 如果当前命名空间为 \xyz\hdiot, 则 User 将被解析为 \xyz\hdiot\User
[*]限定名称: 包含前缀的名称($u = new hdiot\User();), 如果当前名称空间为 \xyz, 则 User 将被解析为 \xyz\hdiot\User
[*]完全限定名称: 包含了全局前缀操作符的名称($u = new \hdiot\User();), 在这种情况下 User 将被解析为 \hdiot\User

别名和导入

别名可以看做是快捷使用命名空间的一种方法, 可以为命名空间/类设置别名, 避免了使用冗长的命名空间, 而是用简短的一串字符串代替

使用别名

使用 use 关键字为命名空间/类设置别名
use 命名空间 as 别名;   // 为命名空间设置别名
use 命名空间\类 as 别名;   // 为类设置别名使用时将原本的命名空间/类替换成别名即可

注意事项

如果别名或者导入的命名空间中的元素, 与原命名空间的元素同名时, 会发生冲突, 产生致命错误

魔术常量

namespace: 当前命名空间
__NAMESPACE__: 当前命名空间名称

Markdown 文档下载:链接: http://pan.baidu.com/s/1hsfro0k 密码: wnnt

链接掉了请私信


ShadowY 发表于 2016-11-27 10:39

楼主厉害!给你顶顶

小歪歪歪 发表于 2016-11-27 10:51

mark一下,正好最近在弄PHP脚本

yutaiker 发表于 2016-11-27 12:07

谢谢分享~~

倾风 发表于 2016-11-30 11:07

谢谢了,希望有用

caijinqi1998 发表于 2016-11-30 13:19

支持楼主系列,之前在敏捷开发上看到PHP,据说开发和迭代超短?

He110 发表于 2016-11-30 13:52

caijinqi1998 发表于 2016-11-30 13:19
支持楼主系列,之前在敏捷开发上看到PHP,据说开发和迭代超短?

我还在学习,我也不清楚,我买了本 细说PHP 第三版在跟着学,现在就学到文件操作那而已

kay1686 发表于 2016-12-1 15:41

666666666666666
页: [1]
查看完整版本: PHP 笔记——命名空间