#php
#php
Вопрос:
Разрешено ли мне помещать строки синтаксиса heredoc в одинарных кавычках, в двойных кавычках или nowdoc непосредственно в функции, для параметров которых требуется строка, например, strlen('string text')
или strlen("some more string text")
вместо включения переменной, например strlen($str);
?
Если нет, то почему?
Комментарии:
1. Я пробовал nowdoc и herdoc, но безуспешно.
2. heredoc работает без проблем, хотя это немного сложно (и нечитаемо), т. Е. если вы начинаете его с
<<<STRING
, вы не можете закончить его сSTRING);
илиSTRING, $otherParam
. Вы также не можете ставить пробел передSTRING
. Смотрите пример lonesomeday, он работает так, как ожидалось.3. Хотя для этого нет причин, это добавляет ненужный вызов функции, потому что результат будет одинаковым каждый раз.
4. @gnur, подумай еще раз 😉 Строка может содержать переменные с непостоянными значениями, а также
strlen()
может быть приведена только для иллюстрации, т.Е. в действительности могут использоваться другие функции.
Ответ №1:
Вам разрешено это делать, если функция не ожидает, что строковая переменная будет передана по ссылке:
// 'amp;' means that argument is passed by reference
function requestStringAsVariable(amp;$str) {
$str = '*' . $str . '*';
}
$str = 'test';
requestStringAsVariable($str);
echo $str; // outputs '*test*';
requestStringAsVariable('foo'); // won't work, as function expects variable
Ответ №2:
Да, вы можете использовать любой синтаксис для создания строк.
Однако обратите внимание, что вы должны быть осторожны при использовании синтаксиса heredoc / nowdoc с вызовами функций: последняя строка строки не может содержать ничего, кроме идентификатора:
var_dump(<<<HERE
foo
HERE
);
Ответ №3:
ДА. Вы можете. Вам не нужно хранить его в переменной