Область действия функции отличается от глобальной области видимости.b.inc
будет видеть $ a, а любые переменные, созданные в b.inc
, будут находиться в области видимости foo :: bar () (если они не определены как глобальные или внутри их собственной области функций).
Вы можете проверить это с помощью некоторого кода:
function foo() {
$a = 1;
include '1.php'; // modify and initialize, ie. $a++; $b = 3;
include '2.php'; // test the values: $a == 2; $b == 3
}
Иногда мы сталкиваемся с этой проблемой, когда запускаем WordPress в других сценариях: сценарии инициализации предполагают, что они находятся во внешней области видимости, поэтому они будут устанавливать переменные, такие как $wpdb
(объект базы данных), но этот файл фактически будет создан в некоторой функции, которая выполнила require_once()
.Решение состоит в том, чтобы всегда загружать WordPress в приложении, прежде чем вы попадете в область действия любой функции.