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