Подтвердить что ты не робот

Глобальная переменная PHP undefined внутри функции, даже если используется глобальное ключевое слово

Да. Я знаю, что глобальные переменные - это плохая практика, но облегчение этого правила для этого: P

Мой код:

include('something.php'); //where $from is declared

function myfunc() {
    global $from;
    echo "from(myfunc)=$from<br />";
    ...
}

echo "from=$from<br />";
myfunc();

Результат:

from=2010-05-01
from(myfunc)=

Что происходит?: (

EDIT: Если это помогает, весь приведенный выше код находится внутри файла вида в CodeIgniter (и да, я знаю, что функции не должны быть внутри представлений: P)

4b9b3361

Ответ 1

Я буду держать пари, что вы не находитесь в глобальном масштабе с этим фрагментом. Вы вызываете это из функции?

В этом случае $from, который вы определяете в something.php, не является глобальным, а тот, который вы указываете в функции.

Это, вероятно, будет работать, если вы добавите global $from; внутри something.php, прежде чем определить $from.

Излишне говорить, что это нехорошая практика в любом случае, и вы должны следовать совету Гордона.

Ответ 2

Сделайте себе одолжение и используйте Injection Dependency.

function myfunc($from) {
    return "from(myfunc)=$from<br />";
}
$from = '2010-05-01';
echo myfunc($from);

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