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'