【发布时间】:2013-04-03 07:20:57
【问题描述】:
我创建了几个使用公共类的 WordPress 插件。插件应该单独工作,理想情况下没有将公共类安装为单独的插件,但它们也可以在同一个安装中激活。现在我可以通过执行 class_exists 检查来防止多次加载该类,但我想更好地控制正在使用的类的版本,最好是最新版本。这是因为用户可能没有更新其中一个插件,而它可能正是所使用的公共类的那个版本。有没有办法进行这样的检查?
我想防止这种情况发生:
- 用户安装了 2 个不同的插件:WPFoo 和 WPBar,它们都使用 MyClass。
- 用户拥有最新版本的 WPBar,但 WordPress 加载了旧版本的 MyClass,包含在 WPFoo 中,即使他已经在 WPBar 中拥有最新版本的 MyClass。
- 理想情况下,用户不必担心这一点,因为他已经拥有最新版本。
我想到了以下场景:
- 定义将存储类版本的全局变量 ($myclassversion)
- WordPress 加载第一次出现的公共类并存储其版本
- WordPress 命中了第二次出现的普通类。在加载类之前,将执行 class_exists 检查并将 $myclassversion 与此类版本进行比较。当此类版本较高时,旧的类被取消设置,而新的类被加载。
但是,您不能通过简单地再次定义一个类来取消设置/覆盖它,对吧?
一些附加信息: 这些类已经分成不同的文件。我曾想过为每个插件以不同的方式命名类,但最终它们会修改相同的内容,并且当它们一个接一个地这样做时会变得混乱(如果版本不同,则每个方式都会略有不同)。
【问题讨论】:
标签: php class versioning wordpress