Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在使用一个插件(Paid Memberships Pro,但这不重要),我需要在该插件中重载一个函数。我正在编写一个自定义“插件”来更改付费会员专业插件的某些部分。其中大部分工作良好。我可以编写优先于其对应对象的模板,但是当我编写一个函数时,我无法从其他插件调用它。我想这是由于安全或其他原因,并且是故意的。
我的问题是:有没有一种好方法可以从不同的功能覆盖某些插件功能?我希望能够更新原始插件而不丢失功能(否则我会直接覆盖它)。如果您需要查看任何代码,我已经很方便了。
添加功能的最佳方法是分解插件并分离行为。如果插件在设计时没有考虑到可扩展性和可定制性,那么您将遇到困难,特别是如果您希望更新没有重大更改。
例如:您可能需要访问私有函数或属性,如果您继承/覆盖,则不能这样做。当您更新到插件的新版本时,该功能或属性甚至可能会消失。
从非抽象类或设计为从非抽象类继承是一种代码异味。