RE: [PHP-DEV] Regression between RC1 and RC2?

From: Date: Mon, 17 Oct 2016 19:33:32 +0000
Subject: RE: [PHP-DEV] Regression between RC1 and RC2?
References: 1 2 3 4 5 6 7 8 9 10  Groups: php.internals 
Request: Send a blank email to internals+get-96397@lists.php.net to get a copy of this message
Hi, > -----Original Message----- > From: Andrea Faulds [mailto:ajf@ajf.me] > Sent: Monday, October 17, 2016 8:08 PM > To: internals@lists.php.net > Subject: Re: [PHP-DEV] Regression between RC1 and RC2? > > Hi Stas, > > Stanislav Malyshev wrote: > > Hi! > > > >>> So the problem basically is that in PHP 7.0 both print_r and > >>> var_dump directly print to output. This means that by the time the > >>> exception is thrown, we've already written output. This makes it > >>> unclear how exactly the exception should be handled. Is it okay to > >>> just print everything and handle the exception afterward? This seems odd to > me -- if an operation fails it shouldn't do anything. > > > > This sounds nice in theory, in practice often impossible. I.e. if you > > already started printing and then some dependency fails, then you get > > half-printed output. That's fine IMHO. Exception is not a normal > > condition, so you get result which is not normal. > > > >>> In PHP 7.1 I've rewritten print_r() to use an internal buffer, so we > >>> could handle this case completely gracefully. The same change could > >>> be implemented for var_dump(). With this approach we'd only print > >>> anything if no exception occurred. > > > > This is ok, but I don't think it's required. If you've got in > > exception in conversion, all bets are off, any result that passes a > > low sanity margin IMHO is ok - including both printing whatever > > happened before the exception and not printing anything. > > > > I also think that the exception firing mid-output isn't all that unreasonable. If you > were to implement var_dump() or print_r() yourself in userland, and didn't > explicitly handle this case, you'd get the same result, I imagine. > FYI the patch is now reverted also in the dev branches. The ticket https://bugs.php.net/bug.php?id=73067 is re-opened, as the discussion is continued. Regards Anatol

« previous php.internals (#96397) next »