Задать вопрос
Lafafm
@Lafafm
Development lead, Full stack generalist

Строка без кавычек, и как это работает?

Здравствуйте! Сегодня у себя в коде заметил небольшую опечатку.
Есть фрагмент с строкой, в которой находиться 1 слово, и я как оказалось скрипт все время корректно работал с таким синтаксисом строки:
$str = logg;

К сожалению не смог найти в документации упоминания об этом, при var_dump данной переменной выводиться:
string(4) "logg";

Хотелось бы узнать, это автоматическое определение типов php, или что-то другое? И стоит ли вообще использовать строки в таком виде?
Заранее спасибо.
  • Вопрос задан
  • 2717 просмотров
Подписаться 1 Оценить 1 комментарий
Решения вопроса 2
FanatPHP
@FanatPHP
Чебуратор тега РНР
В документации упоминается в довольно неожиданном месте приплетая совершенно неужный контекст. На самом же деле массивы тут совершенно не при чем.

Это остатки той "магии", которой так славились первые версии РНР (волшебные глобальные переменные, волшебные кавычки и пр.), и от большей части которой уже удалось избавиться, а это все ещё болтается почему-то в языке.

Ответ на вопрос, можно ли использовать - нет, нельзя.
Ответ написан
воспринимается как константа, в случае не существования константы возвращается её название.
такие вот чудеса =)

define( 'TEST_CONST', '123qwe' );
    $test = [ TEST_CONST, TEST_CONST2 ];
    var_dump( $test );


array(2) {
  [0]=>
  string(6) "123qwe"
  [1]=>
  string(11) "TEST_CONST2"
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
php считает это необъявленной константой, по умолчанию равной строковому эквиваленту своего названия.

если ты включишь вывод ошибок, то увидишь следующее:
Use of undefined constant logg - assumed 'logg'
Ответ написан
Комментировать
zoonman
@zoonman
⋆⋆⋆⋆⋆
Эта строка интерпретируется как константа, и, ввиду того, что она не определена, по умолчанию возвращается ее имя в качестве значения.
Использование необъявленных констант возвращает уведомление и является признаком плохого кода.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы