gre*_*600 5 php wordpress plugins
我正在写一个WordPress插件.(但是,这不是特定于WordPress的问题 - 任何使用插件模式的PHP代码库都可能出现这种挑战.)
我的插件使用了流行的第三方库,许多其他常见的WordPress插件也使用它.
显然,如果我的插件和另一个插件都加载了这个库的副本,那么PHP会抛出错误,因为我正在尝试重新声明已经声明的类.
我该如何避免这种冲突?在你回答之前,请考虑为什么我拒绝这些明显的选择:
我可以重命名库的类,或者将它们放在新的命名空间中.我不喜欢这个,因为它涉及修改库文件.如果我以后需要升级到更新版本的库,它将覆盖我的修改.它通常只是一个不优雅的PITA.
在我的插件实际包含库之前,我可以使用class_exists()它来确保它还没有包含在内.我不喜欢这个选项有两个原因:
class_exists()在这里没有帮助我 - 两个插件都无法包含他们需要的ChildClasses而不会引起冲突.那么:如何在不遇到其中一个问题的情况下使用这个库?有没有办法在包含时覆盖库的命名空间(不修改库)?还有其他一些我忽略的解决方案吗?这似乎是一个非常常见的情况.
我正在回答我自己的问题。(我不敢相信三年前我还是这个na\xc3\xafve!)
\n\n这个问题(以及其他问题)正是依赖管理器存在的原因。(如果您使用 npm,那么您已经熟悉依赖项管理。)
\n\n在 PHP 世界中,Composer是依赖管理的标准工具。
\n\n然而,WordPress 并不是真正为了与依赖管理器(或源代码控制)很好地配合而构建的。事实上,WordPress 正在积极对抗做法。
\n\n有一个名为Bedrock的项目,它试图将 WordPress 扭曲成与现代开发实践兼容的东西。我还没有使用它 \xe2\x80\x93 但如果你必须使用WordPress,那么它值得研究。
\n\n长话短说:
\n\n| 归档时间: |
|
| 查看次数: |
162 次 |
| 最近记录: |