Re: [DOC-BUGS] Possible BUG?

[email protected] (Tiffany Taylor) Mon, 6 Dec 2021 09:44:18 -0600
Newsgroups php.doc.bugs
Message-ID <CAHSBg47Whp+9EicwqN_v6gb8Gqa6R_V7o11P1k6CASSF5MvJEQ@mail.gmail.com>
On Mon, Dec 6, 2021 at 9:42 AM Tiffany Taylor <[email protected]>
wrote:

> On Mon, Dec 6, 2021 at 9:31 AM zerof <[email protected]> wrote:
>
>> Why is it that whenever I run this code and different versions of PHP,
>> in versions 7.4.26 and 8.0.13 it gives a Parse error, but in version
>> 8.1.0 it doesn't give any error?
>>
>> <?php
>>
>> if(PHP_MAJOR_VERSION == 8)
>> {
>> echo 'PHP '. PHP_VERSION . '<br>';
>> define("k16a", 0o1023);
>> echo 'k16a = ' . k16a;
>> }
>> else
>> {
>> echo 'PHP '. PHP_VERSION . '<br>';
>> define("k16a", 01023);
>> echo 'k16a = ' . k16a;
>> }
>>
>> // PHP 8.1.0
>> // k16a = 531
>>
>> // PHP 8.0.13
>>
>> // Parse error: syntax error, unexpected identifier "o1023", expecting ")" in ...echo16.php on line 6
>>
>>
>> // PHP 7.4.26
>>
>> // Parse error: syntax error, unexpected 'o1023' (T_STRING), expecting ')' in ...echo16.php on line 6
>>
>> ?>
>>
>> --
>> prof José Roberto Fernandes ( ZEROF )
>> São Paulo, SP, Brasil
>>
>
> Not a bug. :)
>
> In 8.0, the `define` keyword removed support for barewords in values[1].
> In 8.1, support for explicit octal integer literal notation[2] came. I'm
> unsure if this is documented appropriately, but I knew what the RFCs were
> off-hand. Docs for 8.1 are still in the process of completion.
>
> [1] https://wiki.php.net/rfc/deprecate-bareword-strings (deprecated in
> 7.2, throws error in 8.0)
> [2] https://wiki.php.net/rfc/explicit_octal_notation
>

I should clarify, the support for barewords altogether was deprecated in
7.2, then removed in 8.0. It wasn't limited to the `define` keyword.