【发布时间】:2013-07-14 16:19:37
【问题描述】:
如果我有相同的第三方库(或类)的不同版本,它们当然具有相同的命名空间和类名。有没有办法将它们包含在同一个项目中以避免名称冲突?
当我们有一个单独开发组件的模块化项目时,会发生此问题的另一种情况。所以我们可以有不同的模块,在它们自己的文件夹中包含相同的外部库文件,但是当模块被加载时,我们当然会发生类冲突。
在这篇文章中Loading multiple versions of the same class
一位用户建议使用此代码:
namespace old {
include /lib/api-1.0/library.php;
}
namespace foo {
include /lib/api-2.0/library.php;
}
$oldlibary = new old\Library();
$newlibrary = new foo\Library();
但它当然不起作用。类无论如何都会发生冲突,因为它们被声明为全局而不是变量。
那么..是否有另一种解决方案不是手动编辑要包含的所有库的命名空间?
提前致谢
【问题讨论】:
-
new是一个关键字,它不能像命名空间一样工作。 -
这很棘手,因为一旦包含函数和类,它们就会在全局范围内定义。变量不是。
标签: php namespaces include version libraries