0

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'
4

1 に答える 1

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

于 2013-01-21T00:08:51.780 に答える