有没有看到一个对象是否专门实现 – > __ 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