I this a bug in PHP 7.1.9?

  100359
September 4, 2017 00:27 jgmdev@gmail.com (Jefferson Gonzalez)
I upgraded my PHP version on a server from 7.0 to latest 7.1.9 and got 
this strange behaviour, did something changed on the core language or is 
this a bug?

PHP sample code:
------------------------------------------

    
  100360
September 4, 2017 00:48 david.proweb@gmail.com (David Rodrigues)
From doc: http://php.net/manual/en/language.variables.scope.php

> Note: Static variables may be declared as seen in the examples above. From PHP 5.6 you can assign values to these variables which are the result
of expressions, but you can't use any function here, what will cause a parse error. 2017-09-03 21:27 GMT-03:00 Jefferson Gonzalez <jgmdev@gmail.com>:
> I upgraded my PHP version on a server from 7.0 to latest 7.1.9 and got > this strange behaviour, did something changed on the core language or is > this a bug? > > PHP sample code: > ------------------------------------------ > > function test() > { > static $staticValue = test2(); > > return $staticValue; > } > > function test2() > { > return array(); > } > > print_r(test()); > > ------------------------------------------ > > Output: > > PHP Fatal error: Constant expression contains invalid operations in > test.php on line 5 > > Fatal error: Constant expression contains invalid operations in test.php > on line 5 > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php > >
-- David Rodrigues
  100361
September 4, 2017 04:41 jgmdev@gmail.com (Jefferson Gonzalez)
On 09/03/2017 05:48 PM, David Rodrigues wrote:
> From doc: http://php.net/manual/en/language.variables.scope.php > >> Note: Static variables may be declared as seen in the examples above. > From PHP 5.6 you can assign values to these variables which are the result > of expressions, but you can't use any function here, what will cause a > parse error. Ahh, thanks a lot, I missed that one... I guess this change is to
optimize the performance of PHP somehow. Now I will have to make a search on my code base to see where I'm using more functions that use static variables to store the return value of a function (to speed stuff up) and change it on a way that is compatible... static $var = array(); if(empty($var)) { $var = function_output(); }
  100369
September 4, 2017 12:59 rowan.collins@gmail.com (Rowan Collins)
On 4 September 2017 01:27:49 BST, Jefferson Gonzalez <jgmdev@gmail.com> wrote:
>I upgraded my PHP version on a server from 7.0 to latest 7.1.9 and got >this strange behaviour, did something changed on the core language or >is >this a bug? > >PHP sample code: >------------------------------------------ > >function test() >{ > static $staticValue = test2(); > > return $staticValue; >} > >function test2() >{ > return array(); >} > >print_r(test()); >
According to 3v4l.org this has never been valid: https://3v4l.org/vRaNK The error message changed between 5.x and 7.x, but if you're already on 7.0 you shouldn't have seen any change. Are you sure this test case correctly represents the code you're having problems with? Regards, -- Rowan Collins [IMSoP]