PHP неопределенная переменная - PullRequest
3 голосов
/ 08 июня 2011

Для следующего кода:

line 10: echo "before require: ".$test; 
line 11: require( dirname(__FILE__) . 'load.php' );
line 12: echo "after require: ".$test; 

Выход:

before require: 
Notice: Undefined variable: test in /home/test.php on line 12
after require:

Если load.php очень прост, не будет сообщения: «Notice: undefined variable ....». Почему и как «load.php» повлияет на переменную $ test?

Ответы [ 5 ]

3 голосов
/ 08 июня 2011

Если переменная $test - это unset внутри load.php файла.

Это повлияет на вашу переменную $test, и вы увидите Notice: Undefined variable.

, потому что переменные, объявленные перед оператором включения, будут доступны внутри включаемого файла, поэтому любое действие, выполняемое с этой переменнойвнутри этого включенного файла повлияет на эту переменную.

0 голосов
/ 12 февраля 2013

Если вы настроили PHP для отображения всех уведомлений, предупреждений и ошибки, вы увидите уведомление при запуске этого сценария: Примечание: Неопределенная переменная: тестирование в /path/to/testtype.php в строке 3 Уведомления включены по умолчанию при использовании php-development.inirather чем php-production.ini, и может быть очень полезным при отладке скрипты.

0 голосов
/ 08 июня 2011

Разве это не должно быть require( dirname(__FILE__) . '/load.php' );? :)

В любом случае, похоже, что вы либо unset() переменная в load.php, либо изменили display_errors и / или error_reporting на более высокий уровень в load.php.

0 голосов
/ 08 июня 2011

Из документации :

Когда файл включен, содержащийся в нем код наследует переменную scope строки, в которой происходит включение. Любые переменные, доступные в этой строке в вызывающем файле, будут доступны в вызываемом файле, начиная с этого момента. Однако все функции и классы, определенные во включаемом файле, имеют глобальную область действия.

0 голосов
/ 08 июня 2011

Ваша переменная не задана, следовательно, уведомление.

Если вы установите значение переменной $test в load.php, оно будет иметь это значение.

Если выне, ну ... в вашем случае это останется неопределенным, не очень хорошая практика.

...