是否有任何函数可以恢复require / require_once / include / include_once?
例如在脚本A中,我需要一个脚本B,它具有其他脚本C的常用功能,我不知道以前是否需要C。所以我想在加载B之前从内存中“清理”脚本C,以防止重复的功能。
答案 0 :(得分:3)
你不能 - 也不应该那样做。而是使用require_once
- 这样的操作是安全的。请注意,包含后您的上下文将被更改 - 因此无法撤消"反向"可以应用它。
如果要覆盖某些功能 - 您可以随时执行此操作,它将正常工作。你应该在宣布之前检查一下:
function_exists()
for functions class_exists()
用于课程defined()
for constants 答案 1 :(得分:3)
不是我知道的。
老实说,我的建议(假设你正在“清理”某些代码)将抽象出脚本B和脚本C的常用功能到另一个脚本D中,并在脚本B和C中使用require_once / include_once。
答案 2 :(得分:2)
这不是它的工作原理。但是,您可以使用以下命令阻止函数库发生函数命名冲突:
if (!function_exists('myfunction')) {
function myfunction($param) {
// ...
}
}
也就是说,如果你还没有在任何地方使用require_once / include_once(你应该)。
答案 3 :(得分:2)
您可以对文件命名空间以防止冲突:
<?php
namespace Foo {
function test() {
return __NAMESPACE__ . '::' . __FUNCTION__;
}
}
namespace Bar {
function test() {
return __NAMESPACE__ . '::' . __FUNCTION__;
}
}
namespace Baz {
var_dump(array(
\Foo\test(),
\Bar\test(),
));
}