我遇到了一个非常有趣的问题。我有两个类:APISession
和ApiSession
。我还有一个API类,它有一个方法,比如:
public static function request($category, $name, $params) {
$params["Response"] = new APIResponse();
$class = new ReflectionClass("API".$category);
return $class->getMethod($name)->invoke(null, $params);
}
我正在调用方法:
$result = API::request("Session", "Check", array());
当然,我希望它执行APISession
类的Check
方法,但是,我收到了以下问题:
致命错误:未捕获异常"PHPErrorException",消息为"异常"ReflectionException",消息为"方法检查不存在
我已经检查了问题的来源,这是由于request
到达ApiSession
而不是APISession
,尽管传递给它的字符串是"APISession"
。我的问题是:是否可以告诉ReflectionClass
构造函数区分大小写?
类名在PHP中不区分大小写,这可以通过在命令行上执行以下命令来分散:
php -r 'class APISession { } class ApiSession { }'