【问题标题】:What are some practical PHP namespacing solutions?有哪些实用的 PHP 命名空间解决方案?
【发布时间】:2011-12-24 18:25:50
【问题描述】:

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

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

我目前认为每个版本都可以有一个唯一的类名(带有版本号或其他内容)......我可以使用某种简单的加载器将其抽象一下(为简单起见)。

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

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

如果有其他解决此问题的 SO 帖子,请告诉我,另外,请随时用其他要点目标重新表述问题。

【问题讨论】:

    标签: php class namespaces


    【解决方案1】:

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

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

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

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

    如果您提供用于演示 (SDK) 的示例插件,我认为许多库用户会采用。

    【讨论】:

      猜你喜欢
      • 2015-07-08
      • 2010-09-05
      • 1970-01-01
      • 2020-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多