什么是实用的PHP命名空间解决方案?

时间:2011-11-08 19:48:46

标签: php class namespaces

这是场景(它有点具体,但仍然足以适用于任何php lib):

WordPress 3.2.1或更早版本(PHP代码库,PHP5 w /和无名称间距可用)...我创建了一个带有几个类名的小型PHP库(WPAlchemy_MetaBox,WPAlchemy_MediaAccess)...开发人员已经开始使用插件/主题中的类,其中WordPress可以安装很多(在相同的环境中),因此很可能使用该库的两个或更多插件(显然可能与类名发生冲突)

我目前认为每个版本都可以有一个唯一的类名(带有版本号或其他东西)......我可以用一些简单的加载器(为简单起见)来抽象一点。

我想获得一些最佳实践来解决上述问题。

  • 防止名称冲突
  • 允许开发人员根据需要使用特定版本

如果还有其他SO帖子可以解决这个问题,请告诉我们,另外请随时重新提出问题以及其他要点目标。

1 个答案:

答案 0 :(得分:0)

要防止碰撞,请使用自动加载器(请参阅spl_autoload_register)。因此,如果您共享库并且每个共享器使用自动加载器,则类名冲突(重新声明类致命错误)将不再发生。

这不能解决版本问题(例如,来自同一系列但具有不同版本的不同类)。

一个简单的解决方案(与自动加载器结合使用)是将库作为插件提供。每次库更新时,都要更新插件。该插件仅提供自动加载器和类。

其他想要使用该库的插件必须使您的library-plugin成为依赖项,例如:检查它并告诉用户安装它(如果它不可用或只是自动安装它)。

如果你提供一个示例插件来为演示(SDK)做这个,我想很多用户会采用的库。