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