【发布时间】:2015-10-19 03:59:40
【问题描述】:
我试图在我的 Wordpress 插件中包含 commonly used API 并遇到重复的类错误。我尝试使用 class_exists() 检查,但无法控制插件加载的顺序,另一个插件(不检查 class_exists)在我之后加载,然后 WP 崩溃。
我考虑过编辑 API 类并添加一个相对独特的前缀。我也考虑过更新它以使用命名空间。但是,从长远来看,维护 3rd 方代码的更改似乎并不理想。
有没有办法在不直接编辑 API 代码的情况下完成此操作?为 API 类创建一个命名空间的包装器怎么样?
更新:
我看到其他几个人也有同样的问题。在过去的一个月里,我一直在阅读有关最佳实践的信息,但仍然没有找到任何好的建议。我的软件现在使用了几个可能发生冲突的 API,因为其他插件编写者不检查 class_exists。我不能直接编辑到 namespace 所有这些第 3 方 API,因为有些 API 非常大/复杂,我觉得必须有更好的选择。
我仍然很好奇是否有办法为第 3 方 API 类创建命名空间的包装器。或者如果有其他想法,我很想听。
【问题讨论】:
-
yup
namespace它并向该存储库提交拉取请求!!! -
你遇到了什么错误?
-
@MatthewD 我得到了白屏死机。如果我注释掉 API 包含或禁用其他插件(使用相同的 API),那么一切正常。
-
您如何将 API 包含/加载到您的插件中?
-
实例化我的主插件类时,我有一个加载包含的函数。我在这里使用 require_once() 加载 API。例如, require_once MY_PLUGIN_DIR 。 'includes/api/GetResponseAPI.class.php';
标签: php wordpress namespaces