PHP名称解析规则


介绍

在PHP代码中,命名空间的出现根据以下规则解析:

  • 不包含命名空间分隔符(**\**)的命名空间标识符表示它引用当前命名空间。这是一个非限定名。

  • 如果它包含分隔符,例如 **myspace\space1**,它将解析为 myspace 下的子命名空间 space1。这种类型的命名是相对命名空间。

  • 完全限定命名空间的名称以 \ 字符开头。例如,\myspace 或 **\myspace\space1**。

  • 完全限定名称解析为绝对命名空间。例如 **\myspace\space1** 解析为 **myspace\space1** 命名空间

  • 如果名称出现在全局命名空间中,则将删除 **namespace\** 前缀。例如 **namespace\space1** 解析为 **space1**。

  • 但是,如果它出现在另一个命名空间内,则处理方式不同。例如,如果 **namespace\space1** 在 myspace 内,它等效于 **myspace\space1**

  • 限定名称中名称的第一部分根据当前类/命名空间导入表进行转换。

  • 如果没有任何导入规则适用,则将当前命名空间添加到名称前面。

  • 类名根据类/命名空间导入表进行转换,函数名根据函数导入表进行转换,常量根据常量导入表进行转换。

  • 对于非限定名称,如果没有任何导入规则适用,并且名称引用函数或常量,并且代码位于全局命名空间之外,则在运行时解析名称。它首先从当前命名空间查找函数,然后尝试查找并调用全局函数。

更新于:2020年9月18日

165 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告