假设我做了
require('lol.php');
,其中lol.php包含以下函数声明
function lolfunc(){
}
是否可以"不需要"lol.php,这样我就可以要求另一个文件
require('lol2.php');
,其中lol2.php包含与先前在lol2.php中声明的同名的函数:
function lolfunc(){
echo "this is lol2 biyotch";
}
和lolfunc()是一个在lol2.php声明?例如,如果我调用lolfunc(),它会返回"this is lol2 biyotch"??
我的回答是:不要那样做。
尝试与原作者合作,将你需要的函数包含在旧代码的补丁版本中,然后在任何地方使用这个补丁版本。
如果你不能做到这一点,找出将所有代码更新到新版本实际上是一项多大的工作。从白盒分析开始:看看在接口、数据结构等方面有什么变化。然后检查调用代码,看看调用者是否关心任何已经改变的东西。
如果你甚至不能做到这一点,使用名称空间或其他形式的包装,这样你就可以包括两个库。但是,请确保在两个库上都完成了任何初始化或设置!
您应该做的是根据条件子句包含所需的文件(集),而不是试图"不需要"。
:
if($flag_use_oldver)
{
include("oldver.php");
}
else
{
include("newver.php");
}
如果你想要一个更复杂的解决方案,当然你可以尝试有一个包装器类层次结构,它可以根据需要扩展/覆盖,但我认为对于一个非常简单的问题陈述来说,这有点过于工程化了。