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: 当前命名空间
__NAMESPACE__: 当前命名空间名称
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值