Possible Duplicate:
Removing a function at runtime in PHP“销毁”的功能
我有一个脚本,是包括不同的文件运行时。这些文件都包含一个具有相同名称的函数。我只需要目前包含的存在。有什么办法来启用动态文件,所以它不会导致致命错误:无法重新声明函数()? 换句话说,我需要重命名或删除以前的功能。
的功能在传统的单向函数FN(声明){;}
Possible Duplicate:
Removing a function at runtime in PHP“销毁”的功能
我有一个脚本,是包括不同的文件运行时。这些文件都包含一个具有相同名称的函数。我只需要目前包含的存在。有什么办法来启用动态文件,所以它不会导致致命错误:无法重新声明函数()? 换句话说,我需要重命名或删除以前的功能。
的功能在传统的单向函数FN(声明){;}
不是每个文件中定义具有相同名称的顶级功能,可以考虑使用一个非常简单的OO结构:
假设你有这样的事情:
switch ($some_condition)
{
case 'normal':
default:
include_once 'normal_function.php';
break;
case 'special':
include_once 'special_function.php';
break;
case 'secret':
include_once 'secret_function.php';
break;
}
do_the_action();
你可以像这样的东西替代它:
switch ($some_condition)
{
case 'normal':
default:
include_once 'normal_class.php';
$handler_object = new Normal_Class();
break;
case 'special':
include_once 'special_class.php';
$handler_object = new Special_Class();
break;
case 'secret':
include_once 'secret_class.php';
$handler_object = new Secret_Class();
break;
}
$handler_object->do_the_action();
然后在每个包含文件的,而不是一个functi对,你会定义包含函数的类,像这样:
class Normal_Class
{
public function do_the_action()
{
// Implementation for normal case goes here
}
}
这不仅解决您的问题,它让你在旅途中学习其他先进/ OO PHP技术 - 自动加载的文件,所以你不要每次都不必指定include_once
,定义层次结构和接口等。
你应该在“function_exists”内包装你的功能检查:
if (!function_exists('my_func')){
function my_func(){
//...
}
}
,你可以在这里找到更多的细节:http://php.net/manual/fr/function.function-exists.php
您还在使用过程代码吗? – Tarun
是的,我使用程序代码 – user965748
可能的意思是说,你应该去OO。它为你解决了这样的问题。让我知道,如果你需要一些很好的教程链接。 – Kuro