|
|
|
|
|
для: школьник
(13.11.2008 в 13:09)
| | __call вызывается как раз в том случае, если происходит обращение к несуществующему методу класса.
Т.е нет смысла в __call проверять существует ли метод, уже ясно что нет.
А вообще проверить можно с помощью method_exists() | |
|
|
|
|
|
|
| При чем не дублируя и не клонируя обьекта класса
Пример:
class A {
public function __call($name, $param)
{
$flag = false;
if (/* Проверить существует ли метод $name в классе A */) {
$flag = true;
} else {
$flag = false;
}
return $flag;
}
}
try {
$a = new A();
/* Возможности проверить существования метода на этом уровне - нет! */
if (call_user_func_array(array($a, 'lalala'), array())) {} else {
throw new Exception('not exist method');
}
} catch (Exception $e) {
echo $e->getMessage();
}
|
| |
|
|
|
|