0
我在另一個類裏面有一個函數,這樣我就可以在不同的文件夾中組織我所有的'模塊引擎'並調用它們的函數。如何檢查類內的函數是否存在於另一個類中?
例如,我有一個所謂的「mdnewsletter」模塊,該模塊具有內部等其他類:「設置」,「通訊」等
通常,如果我wan't到得到與ID'5'通訊增值稅我這樣做:
$res = $mdnewsletter->newsletter->get(5);
if($res===false) { /* error handler here */ }
/* otherwise, the code here */
但現在我有一個模塊叫'mdapi'。該模塊的建議是安全地加載另一個模塊的引擎並僅對模塊執行命令。
我的問題是關於這個代碼片段:
$response = @eval($eval);
if($response===false && ($error = error_get_last())){
$this->error[] = "mdapi->exec() | A função fornecida não é uma função válida";
$can_exec = false;
$eval = '';
$response = false;
};
我得到執行字符串有「mdnewsletter-> newsletter->得到」和變量VAR等,我不能用method_exists()
。我真的更喜歡閱讀解析錯誤代碼。
如果發生分析錯誤,php代碼將掛起,我不能通知對方代碼不正確或發生錯誤。
我該如何解決這個問題?
編輯: 基於Oktopus
答案,我已經寫了動態檢查功能背後的所有對象,然後將其與最後一個對象,這樣的測試功能的代碼:
// Avaliar se a primeira parte é uma class e os restantes funcoes
$tmp = explode ('->', $tmp);
// Verificar se são objectos até à função (ultima string)
$obj = $$tmp[0];
for($i=0;$i<count($tmp)-1;$i++){
if($i!=0){
$obj = $obj->$tmp[$i];
}
if(!is_object($obj)){
$this->error[] = "mdapi->exec() | A variavel '".$tmp[$i]."' não é um objecto!";
$can_exec = false;
$eval = '';
$response = false;
}
}
// Verificar se a ultima variavel é uma função no ultimo objecto
if(!is_callable(array($obj, $tmp[count($tmp) - 1]))){
$this->error[] = "mdapi->exec() | A função pedida não foi encontrada no ultimo objecto!";
$can_exec = false;
$eval = '';
$response = false;
}
代碼被編輯$$部分[2] => $部件[2] – 2011-05-26 12:24:18
你能解釋一下爲什麼雙$? 我會嘗試現在 – CuSS 2011-05-26 14:07:06
這是一個變量變量:http://www.php.net/manual/en/language.variables.variable.php。 – Bojangles 2011-05-26 14:55:56