php - 有哪些实用的 PHP 命名空间解决方案?

标签 php class namespaces

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

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

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

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

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

  • 如果还有其他 SO 帖子可以解决此问题,请让我知道,另外请随时用其他要点目标重新表述问题。

    最佳答案

    为防止冲突,请使用自动加载器(请参阅 spl_autoload_register )。因此,如果您共享库并且每个共享者都使用自动加载器,则不会再发生类名冲突(重新声明类 fatal error )。

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

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

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

    如果您提供一个示例插件来为演示 (SDK) 执行此操作,我认为许多用户都会采用的库。

    关于php - 有哪些实用的 PHP 命名空间解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8056224/

    相关文章:

    php - 刷新页面时,fsockopen 并不总是执行 mysql 查询

    php - 将纳秒精度的 ISO8601 日期时间格式化为 d-m-Y H :i:s

    oop - 我可以在 MATLAB 中为类属性分配类型吗?

    javascript - 在javascript中动态扩展一个类

    java - 访问addMouseListener()方法内部的方法

    java - TargetNamespace 与 Namespace 有何不同

    javascript - 在 jquery 中创建命名空间时出错

    PHP While 从数组循环

    php - 在使用 Behat 和 Symfony2 的场景之前登录

    c# - 如何让 T4 基于特定命名空间中的类生成代码(递归)