我有一个问题,检查IA功能的存在 - 我知道function_exists()和method_exists(),但不能得到的功能我找检查是否函数存在
我通过像$ MM-套接字连接传递函数>播放器 - >播放()。 之后,我评估他们并通过套接字连接返回结果。
我过滤功能(必须以$ MM开头,其他任何将被拒绝), ,但我不能让我的代码来检查功能是否存在。这很重要,因为如果该函数不存在,服务器将崩溃 。
任何人都知道这个解决方案?
在此先感谢。
代码:
$MM = new SDBApplication;
在SDBApplication的构造函数:
$this->Player = new SDBPlayer;
我尝试以下方法来检查: 代码:
method_exists($MM, "Player::Play");
function_exist("$MM->Player->Play);
都返回false即使函数存在
解决方案
$parts = explode('->', $string);
$numParts = count($parts)-1;
$object = '$MM';
for($i=0; $i < $numParts; $i++){
$object .= '->'.$parts[$i];
}
$parts[$numParts+1] = preg_replace('(\\(.*\\))', '', $parts[$numParts]);
eval('$check = method_exists('.$object.', '.$parts[$numParts+1].');');
它需要eval'd因为输入是一个字符串。
,你能告诉我们你的代码和错误? – 2012-04-11 19:06:59
这是越来越晚了,所以我会做的第一件事tomorow – 2012-04-11 20:45:29
@DavidChan添加了代码 – 2012-04-12 09:05:34