【发布时间】:2015-09-07 21:54:57
【问题描述】:
我有两个独立的 PHP 模块,每个模块都包含一个由 composer 创建的供应商文件夹。两个模块都使用在任何模块类被实例化之前注册的 composer 自动加载器。
每个供应商文件夹都包含不同版本的 Doctrine,因此在同一运行时,如果我从一个模块实例化任何 Doctrine 类,则从另一个模块对同一 Doctrine 类的任何后续调用都将使用第一个实例化类作为它已经被 PHP 自动加载(它具有相同的命名空间,相同的名称)。
有没有办法解决这个问题,而无需实际重命名所有命名空间并使用一个或两个不同 Doctrine 库的声明?
【问题讨论】:
-
这引出了一个问题,为什么你需要加载 2 个教义,这只是一开始就不好。
-
"每个供应商文件夹都包含一个不同版本的 Doctrine"
-
如果您重命名至少一个学说的所有命名空间,它可能是可能的。但是
composer update会杀了你。在 php.ini 的一个项目中不能有一个库的两个版本。更新您的一个项目,使两者都与相同的学说版本兼容,这将是一个干净的解决方案。其他一切都会很糟糕。
标签: php namespaces doctrine composer-php autoload