Hi, On Wed, Mar 15, 2017 at 8:31 PM, Benoît Burnichon <bburnic...@gmail.com> wrote: >> I like the idea kind of, but would this remove the ability to cast to >> array all classes not implementing __toArray, as is the case with >> __toString? This would be a HUGE BC if so: >> >> $ php -r 'class Foo {public $foo = "foobar";} var_dump((array) (new Foo));' >> array(1) { >> ["foo"]=> >> string(6) "foobar" >> } >> $ php -r 'class Foo {public $foo = "foobar";} var_dump((string) (new >> Foo));' >> PHP Recoverable fatal error: Object of class Foo could not be converted >> to string in Command line code on line 1 >> $ php -v >> PHP 7.1.2 (cli) (built: Feb 27 2017 00:02:44) ( ZTS ) >> > > No. For me, classes not implementing __toArray() should keep current > behavior. That was what I had in mind when I wrote that __toArray() should > have a default standard implementation. > > Same restrictions could be applied to this magic method: > http://us3.php.net/manual/en/language.oop5.magic.php#language.oop5.magic.tostring > > By this, I mean, no exceptions should be thrown in this method and return > value MUST be an array.
Exceptions cannot be thrown from inside __toString() because that's hard to implement; it's not a "feature" that anybody wanted. Cheers, Andrey. -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php