If the target class has __call() magic function implemented, then is_callable will ALWAYS return TRUE for whatever method you call it.is_callable does not evaluate your internal logic inside __call() implementation (and this is for good).Therefore every method name is callable for such classes.Hence it is WRONG to say (as someone said):...is_callable will correctly determine the existence of methods made with __call...Example:<?phpclass TestCallable{ public function testing() { return "I am called."; } public function __call($name, $args) { if($name == 'testingOther') { return call_user_func_array(array($this, 'testing'), $args); } }}$t = new TestCallable();echo $t->testing(); // Output: I am called.echo $t->testingOther(); // Output: I am called.echo $t->working(); // Output: (null)echo is_callable(array($t, 'testing')); // Output: TRUEecho is_callable(array($t, 'testingOther')); // Output: TRUEecho is_callable(array($t, 'working')); // Output: TRUE, expected: FALSE?>