строка — Как PHP работает с неопределенной константой?

я использую PHP 7.0.2

Рассмотрите текст ниже из Руководства по PHP:

Почему $ Foo [бар] неправильно?

Всегда используйте кавычки вокруг строкового литерального индекса массива. Например,
$ Foo [ ‘бар’] правильно, пока $ Foo [бар] не является. Но почему? Это обычно
чтобы встретить этот вид синтаксиса в старых сценариях:

<?php
$foo[bar] = 'enemy';
echo $foo[bar];
// etc
?>

Это неправильно, но это работает. Причина в том, что этот код имеет
неопределенная константа (бар) а не строка (‘бар’ — обратите внимание на
цитаты). Это работает, потому что PHP автоматически конвертирует голая строка (
строка без кавычек, которая не соответствует ни одному известному символу) в
строка, которая содержит голую строку. Например, если нет
определенная константа с именем бар, тогда PHP подставит в строку
‘бар’ и использовать это.

Из приведенного выше текста мне не понятно, что когда PHP сталкивался bar() который не соответствует ни одному известному символу, т.е. неопределенной константе, что на самом деле делает с ним PHP?

Как PHP может конвертировать голая строка bar в строку, которая содержит голую строку, т.е. 'bar'?

PHP определяет постоянную строку с заголовком и присваивает строковое значение 'bar' к этому?

подобно bar = 'bar';

Если да, могу ли я использовать константу bar где-то в дальнейшем коде?

Потому что в PHP только переменная и константа могут содержать значение / содержать значение, а не тип, как строка, содержать / содержать любое значение.

0

Решение

Из приведенного выше текста мне не ясно, что когда PHP встречает bar (), который не соответствует ни одному известному символу, то есть неопределенной константе, что на самом деле делает PHP?

Предупреждение, связанное с этим поведением, говорит само за себя:

Warning: Use of undefined constant bar - assumed 'bar' (this will throw an Error in a future version of PHP)

Голое слово обрабатывается как строка, а не как константа — оно обрабатывается точно так же, как если бы вы написали 'bar', Выражение defined('bar') будет по-прежнему ложным, другие случаи bar в вашем коде также будут появляться предупреждения, и код, который зависит от этого поведения, перестанет работать полностью в будущих версиях PHP.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]