ITPub博客

首页 > IT职业 > IT生活 > php命名空间的调用顺序

php命名空间的调用顺序

IT生活 作者:westwolf 时间:2021-09-11 09:48:11 0 删除 编辑

1、完全限定函数、类和常量的调用将会在编译的时候解析。例如,newaB解析为类aB。

2、所有的非限定名称和限定名称(非完全限定名称),根据当前的导入规则在编译的时候进行转换。例如,如果命名空间 ABC 被导入为 C,那么对 CDe() 的调用就会被转换为 ABCDe()。

3、所有非限定名和限定名(非完全限定名)都在编译时根据当前导入规则进行转换。例如,如果命名空间aBC作为C导入,则对CDe()的调用将转换为aBCDe()。

4、非限定类名在编译时根据当前导入规则进行转换(将短导入名替换为全名)。例如,如果命名空间aBC作为C导入,则新的C()将转换为新的aBC()。

在命名空间(例如,ab)中,对非限定名称的函数调用在运行时解析。

对命名空间(如ab)内的非限定名或限定名类(非完全限定名)的调用在运行时解析。以下是调用new c()和new de()的解析过程:解析new c():

new DE()的解析:

为了引用全局命名空间中的全局类,必须使用完全限定名称 new C()。

实例

namespace A;
use BD, CE as F;
// 函数调用
foo();      // 首先尝试调用定义在命名空间"A"中的函数foo()
            // 再尝试调用全局函数 "foo"
foo();     // 调用全局空间函数 "foo"
myfoo();   // 调用定义在命名空间"Amy"中函数 "foo"
F();        // 首先尝试调用定义在命名空间"A"中的函数 "F"
            // 再尝试调用全局函数 "F"
// 类引用
new B();    // 创建命名空间 "A" 中定义的类 "B" 的一个对象
            // 如果未找到,则尝试自动装载类 "AB"
 
new D();    // 使用导入规则,创建命名空间 "B" 中定义的类 "D" 的一个对象
            // 如果未找到,则尝试自动装载类 "BD"
new F();    // 使用导入规则,创建命名空间 "C" 中定义的类 "E" 的一个对象
 
            // 如果未找到,则尝试自动装载类 "CE"
new B();   // 创建定义在全局空间中的类 "B" 的一个对象
            // 如果未发现,则尝试自动装载类 "B"
new D();   // 创建定义在全局空间中的类 "D" 的一个对象
            // 如果未发现,则尝试自动装载类 "D"
new F();   // 创建定义在全局空间中的类 "F" 的一个对象
            // 如果未发现,则尝试自动装载类 "F"
// 调用另一个命名空间中的静态方法或命名空间函数
Bfoo();    // 调用命名空间 "AB" 中函数 "foo"
B::foo();   // 调用命名空间 "A" 中定义的类 "B" 的 "foo" 方法
            // 如果未找到类 "AB" ,则尝试自动装载类 "AB"
D::foo();   // 使用导入规则,调用命名空间 "B" 中定义的类 "D" 的 "foo" 方法
            // 如果类 "BD" 未找到,则尝试自动装载类 "BD"
Bfoo();   // 调用命名空间 "B" 中的函数 "foo"
B::foo();  // 调用全局空间中的类 "B" 的 "foo" 方法
            // 如果类 "B" 未找到,则尝试自动装载类 "B"
// 当前命名空间中的静态方法或函数
AB::foo();   // 调用命名空间 "AA" 中定义的类 "B" 的 "foo" 方法
              // 如果类 "AAB" 未找到,则尝试自动装载类 "AAB"
AB::foo();  // 调用命名空间 "A" 中定义的类 "B" 的 "foo" 方法
              // 如果类 "AB" 未找到,则尝试自动装载类 "AB"
?>

以上就是php命名空间的调用顺序,希望对大家有所帮助。更多php学习指路:php教程

本文转载于php中文网,如有侵犯联系作者修改。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4662/viewspace-2828705/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-07-26

  • 博文量
    307
  • 访问量
    21670