Есть два способа проверить это.
Предположим, у вас есть классы:
class Foo
{
public function __toString()
{
return 'foobar';
}
}
class Bar
{
}
Тогда вы можете сделать либо:
$rc = new ReflectionClass('Foo');
var_dump($rc->hasMethod('__toString'));
$rc = new ReflectionClass('Bar');
var_dump($rc->hasMethod('__toString'));
или используйте:
$fo = new Foo;
var_dump( method_exists($fo , '__toString'));
$ba = new Bar;
var_dump( method_exists($ba , '__toString'));
Разница в том, что в первом случае класс не фактически создан.
Вы можете посмотреть демо здесь: http://codepad.viper -7.com / B0EjOK