SplFileObject __toString继承

时间:2013-01-21 00:01:01

标签: php inheritance tostring splfileobject

我有一个扩展SplFileObject并实现__toString方法的类,但我似乎得到了不一致的行为,具体取决于方法的调用方式。有时调用父方法,有时调用子方法。任何人都可以解释为什么会这样吗?

class Something extends \SplFileObject {
    public function __toString() {
        return 'calling __toString';
    }
}

$something = new Something('test.php');
echo $something; // 'calling __toString'
echo (string) $something; // 'test.php'
echo $something->__toString(); // 'calling __toString'

1 个答案:

答案 0 :(得分:2)

这似乎是旧行为。

在php 5.4+中进行测试会产生预期的行为,而5.3会产生你所看到的行为

http://codepad.viper-7.com/aZgP1h

看似相关的错误:
https://bugs.php.net/bug.php?id=26962
https://bugs.php.net/bug.php?id=60452