有没有看到一个对象是否专门实现 – > __ toString?这似乎不起作用:
method_exists($object,'__toString');
有两种方法来检查它.
假设你有类:
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