WordPress自定义命名空间下继承WC_Email类找不到如何解决
错误原因
- 当你声明了
namespace emails;之后,当前文件内所有未指定命名空间的类名,都会默认拼接当前emails前缀进行查找,因此程序会尝试加载不存在的emails\WC_Email类,抛出找不到类的错误。
解决方案
有两种实现方式,都可以满足你仅为自定义Quote_Received类添加命名空间、不影响原有WooCommerce类加载的需求:
方案1:添加全局命名空间限定符
在引用全局空间的WC_Email时,前面加上反斜杠\,明确指定从全局命名空间查找该类:
namespace emails; class Quote_Received extends \WC_Email { // 类内部逻辑保持不变 }
方案2:用use语句导入全局类
在命名空间声明后用use导入全局的WC_Email类,后续代码可以直接用类名调用:
namespace emails; use WC_Email; class Quote_Received extends WC_Email { // 类内部逻辑保持不变 }
这种方案更适合当前命名空间下多处代码需要用到WC_Email的场景,避免重复写反斜杠。
内容的提问来源于stack exchange,提问作者Jeff French
相关产品推荐
相关产品推荐

