这是场景(它有点具体,但仍然足以适用于任何php lib):
WordPress 3.2.1或更早版本(PHP代码库,PHP5 w /和无名称间距可用)...我创建了一个带有几个类名的小型PHP库(WPAlchemy_MetaBox,WPAlchemy_MediaAccess)...开发人员已经开始使用插件/主题中的类,其中WordPress可以安装很多(在相同的环境中),因此很可能使用该库的两个或更多插件(显然可能与类名发生冲突)
我目前认为每个版本都可以有一个唯一的类名(带有版本号或其他东西)......我可以用一些简单的加载器(为简单起见)来抽象一点。
我想获得一些最佳实践来解决上述问题。
如果还有其他SO帖子可以解决这个问题,请告诉我们,另外请随时重新提出问题以及其他要点目标。
答案 0 :(得分:0)
要防止碰撞,请使用自动加载器(请参阅spl_autoload_register
)。因此,如果您共享库并且每个共享器使用自动加载器,则类名冲突(重新声明类致命错误)将不再发生。
这不能解决版本问题(例如,来自同一系列但具有不同版本的不同类)。
一个简单的解决方案(与自动加载器结合使用)是将库作为插件提供。每次库更新时,都要更新插件。该插件仅提供自动加载器和类。
其他想要使用该库的插件必须使您的library-plugin成为依赖项,例如:检查它并告诉用户安装它(如果它不可用或只是自动安装它)。
如果你提供一个示例插件来为演示(SDK)做这个,我想很多用户会采用的库。