Глобальная переменная 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)
Ответы
Ответ 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);
Это сделает ваш код более удобным для обслуживания, менее связным и более легким для тестирования, потому что он изолирован от глобальной области. Кроме того, когда вы это делаете, люди думают, что вы классные.