Yii2: глобальная переменная в поле зрения - PullRequest
0 голосов
/ 16 марта 2019

Мне нужно объединить строки для последующего вывода (обработка уценки ...).Вот почему я использую функцию l() и глобальную переменную $content.

Мой код просмотра:

$content = "";
function l($line="") {
    global $content;
    $content .= $line."\n";
}
l("hello");
echo "+";
echo $content;
echo "-";

вывод

+-

Я быожидать:

+Hello-

Почему?Что я делаю неправильно?

Я использую PHP 7.2.6

РЕДАКТИРОВАТЬ:

Есть несколько ответов, связанных с PHP как этот .Но они не помогают.Я полагаю, что проблема связана с Yii2 и более конкретно связана с обработкой представления Yii2.

1 Ответ

1 голос
/ 05 апреля 2019

Нашли решение! Сумасшедший!

Yii2 отображает представление внутри экземпляра объекта .

Это означает, что объявление переменной PHP

$content = "";

не является глобальным, но локальным для контекста рендеринга .

Решение вопроса состоит в том, чтобы также сделать объявление переменной в представлении глобальным:

global $content = "";

Рабочий код внутри представления теперь выглядит следующим образом:

global $content = "";
function l($line="") {
    global $content;
    $content .= $line."\n";
}
l("hello");
echo "+";
echo $content;
echo "-";

Бинго!

...