Есть ли законное использование пустых строк в PHP? - PullRequest
2 голосов
/ 09 марта 2010

Этот вопрос заставил меня задуматься о голых строках.

Когда PHP видит строку, которая не заключена в кавычки, он сначала проверяет, является ли она константой. Если нет, он просто предполагает, что это строка и продолжается в любом случае. Так, например, если у меня есть

echo $foo[bar];

Если есть константа с именем bar, она использует ее для ключа массива, но если нет, то она обрабатывает bar как пустую строку, поэтому она ведет себя так же, как

echo $foo["bar"];

Это может вызвать всевозможные проблемы, если в будущем будет добавлена ​​константа с тем же именем.

У меня вопрос: есть ли ситуация, в которой имеет смысл использовать голую строку?

Ответы [ 3 ]

13 голосов
/ 09 марта 2010

Нет, я не вижу ни одного случая, где это имело бы смысл, и это всегда опасно. Использование строк без кавычек должно быть абсолютно зарезервировано для адресации констант. Я не понимаю, как изобретатели PHP могли вообще решить ввести это смешное поведение - это делает практически невозможным правильное использование констант (потому что, если вы попытаетесь получить доступ к константе, которая не была определена, PHP будет молча и глупо генерировать строка) без какого-либо преимущества.

1 голос
/ 09 марта 2010

Это, вероятно, не считается легитимным, но твитируемая инфраструктура MVC моего друга, TweetMVC избегает кавычек в нескольких местах, чтобы втиснуть еще несколько символов, например ::100100

foreach(c('mod')as$f)require"t/$f.php";@list($c,$m,$a)=explode('/',@$_GET[r],3);$c=$c?:c('dc');$o=(@include"c/$c.php")?@new$c($m,$a):e(1)
0 голосов
/ 09 марта 2010

Единственный раз, когда вы используете чистую строку в качестве ключа, это если она ранее использовалась в define() для константы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...