一旦在PHP中需要一个文件,就不再需要它


unrequire a file once it's been required in PHP

假设我做了

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");
}

如果你想要一个更复杂的解决方案,当然你可以尝试有一个包装器类层次结构,它可以根据需要扩展/覆盖,但我认为对于一个非常简单的问题陈述来说,这有点过于工程化了。