PHP名称解析规则
介绍
在PHP代码中,命名空间的出现根据以下规则解析:
不包含命名空间分隔符(**\**)的命名空间标识符表示它引用当前命名空间。这是一个非限定名。
如果它包含分隔符,例如 **myspace\space1**,它将解析为 myspace 下的子命名空间 space1。这种类型的命名是相对命名空间。
完全限定命名空间的名称以 \ 字符开头。例如,\myspace 或 **\myspace\space1**。
完全限定名称解析为绝对命名空间。例如 **\myspace\space1** 解析为 **myspace\space1** 命名空间
如果名称出现在全局命名空间中,则将删除 **namespace\** 前缀。例如 **namespace\space1** 解析为 **space1**。
但是,如果它出现在另一个命名空间内,则处理方式不同。例如,如果 **namespace\space1** 在 myspace 内,它等效于 **myspace\space1**
限定名称中名称的第一部分根据当前类/命名空间导入表进行转换。
如果没有任何导入规则适用,则将当前命名空间添加到名称前面。
类名根据类/命名空间导入表进行转换,函数名根据函数导入表进行转换,常量根据常量导入表进行转换。
对于非限定名称,如果没有任何导入规则适用,并且名称引用函数或常量,并且代码位于全局命名空间之外,则在运行时解析名称。它首先从当前命名空间查找函数,然后尝试查找并调用全局函数。
广告