PHP中如何在命名空间内调用全局命名空间的静态类方法?
解决命名空间内调用全局类静态方法的问题
你遇到的问题是因为在命名空间space1内部,直接写cl2::fctn2()时,PHP会默认去space1命名空间下查找cl2类,而你的cl2是在全局命名空间(无任何命名空间声明)里的,所以找不到目标类。
有两种简单的解决方式:
方式一:使用全局命名空间前缀\
直接在类名前加上\,明确告诉PHP要调用全局命名空间下的cl2类:
namespace space1; class cl1 { public function fctn1() { \cl2::fctn2(); // 加上\前缀指定全局命名空间 } }
方式二:用use语句导入全局类
在命名空间声明后,通过use导入全局的cl2类,之后就可以直接调用了:
namespace space1; use \cl2; // 导入全局命名空间的cl2类 class cl1 { public function fctn1() { cl2::fctn2(); // 直接调用即可 } }
两种方式都能正常调用全局命名空间中cl2类的fctn2静态方法,选你习惯的方式就行。
内容的提问来源于stack exchange,提问作者Huras Aexandre
相关产品推荐
相关产品推荐

