我有一些使用相同Library类的扩展。图书馆包含每个扩展名,当然,它并不总是最新的。代码很简单:
class Library {
function1 (){
...
}
function2 (){
...
}
}
假设我们有2个扩展名:一个是旧版本的库,一个是更新版本。在较新的库中引入了新函数(function3()和function4())。任务很简单:我需要从特定文件夹加载Library类才能使用新功能。默认情况下,当两个扩展在同一页面上处于活动状态时,它会从扩展中加载Library类,这是第一个。
我似乎无法找到实现这一目标的最佳解决方案。我知道命名空间(但之前从未使用过它们),但它们需要更改库文件。我需要“命名空间ExtensionName;”在library.php。
的开头有没有办法避免对库文件进行任何特定于扩展名的更改?
从特定文件加载一堆函数,将它们打包到一些动态命名的类中然后初始化它会很好。
更新
只是为了澄清这一切。说,我有两个扩展名:
扩展1 扩展2
它们都有“system”文件夹,包含两个系统类:
class SystemClassHelper
{
function addStuff()
{
...
}
}
和
SystemClassModel
{
function getStuff()
{
...
}
}
唯一的区别是Extension 2具有更新版本的系统类以及其他功能:
function addMoreStuff()
{
...
}
和
function getMoreStuff()
{
...
}
这两个扩展都广泛使用这些系统类,可以同时执行。这意味着,他们都将使用扩展中的系统类,这是首先执行的。但是如果首先执行扩展1,扩展2将在调用新函数时抛出错误(扩展1中没有新函数,还记得吗?)。
任务很简单:我需要为每个扩展加载系统类,以便能够在需要时使用新功能,并且我希望在不添加命名空间的情况下完成此操作。而且,当然,没有“不能重新宣布上课”的错误。
现在我只是在每个系统类的开头使用它:
namespace Extension1
和
namespace Extension2
这有效,但要求您不断更改系统类并确保添加名称空间。我想将“system”文件夹复制到另一个扩展名并直接从该文件夹加载类。