Edit report at https://bugs.php.net/bug.php?id=53648&edit=1
ID: 53648
Comment by: benjamin dot morel at gmail dot com
Reported by: clicky at erebot dot net
Summary: Allow __toString() to throw exceptions
Status: Suspended
Type: Feature/Change Request
Package: Class/Object related
PHP Version: 5.3.4
Block user comment: N
Private report: N
New Comment:
Now would be the time indeed! Could a core developer comment on this issue?
Previous Comments:
------------------------------------------------------------------------
[2015-03-14 19:46:39] ianbytchek at gmail dot com
Any chance to account for this in PHP 7? I've read that many things in the core are being
re-written / -factored. Would now be the right time to look into this?
------------------------------------------------------------------------
[2014-09-08 09:25:28] benjamin dot morel at gmail dot com
By the way, it's interesting to note that calling __toString() manually works fine:
class A {
public function __toString() {
throw new Exception();
}
}
echo (new A); // fatal error
echo (new A)->__toString(); // exception
Still no news on that issue, 2 years later? It's a very big blocking issue for doing
interesting things in modern frameworks.
------------------------------------------------------------------------
[2012-12-05 01:13:22] aharvey@php.net
Suspending: as Stas explained in the linked e-mail thread, it's "pretty hard" to do
in the current engine.
Should there ever be a Zend Engine 3, however, this could be revisited.
------------------------------------------------------------------------
[2012-12-04 17:15:19] benjamin dot morel at strictcoding dot co dot uk
@nikic: too bad, I did not imagine that this was a problem with PHP internals, but
rather an architectural choice. Can we keep this feature request open, until
someone finds a solution? It would be good to keep this as a target!
------------------------------------------------------------------------
[2012-12-04 16:41:50] nikic@php.net
@benjamin: I don't think anyone opposes this feature request, it's just too hard to
implement. Allowing __toString to throw exceptions would require any internal code doing a zval to
string conversion to be exception-safe. See also: http://markmail.org/message/lkpmpnhrvcbafhkd
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=53648
--
Edit this bug report at https://bugs.php.net/bug.php?id=53648&edit=1