Простой вопрос: я работаю с чужим кодом и, таким образом, нарушу возможности обновления, если я изменю код вне того, над чем я работаю. Мне просто интересно в PHP, если инициализация подразумевается с ключевым словом «global» внутри функции. то есть это ...PHP-глобальная область и переменная инициализация
// some code
function myFunc() {
global $foo;
}
// other code
достаточно похож на ....
// some code
$foo = ""; // any initialization value
function myFunc() {
global $foo;
}
// other code
Я предпочитаю, чтобы инициализировать переменные в базовом объеме, в котором они используются, но, как уже упоминалось, что потребовало бы мне измените внешний код в этом случае.
ОК, но я как бы догадался, что уже много. Являются ли эти два по существу эквивалентными или нет? Представьте себе, например, что $ foo = "" находится внутри функции в первом примере. – Scott
См. Проблему, которую я имею, это старый код, уродливый в том, что он пытался сделать материал, еще не поддерживаемый в php, с помощью evals. Мы в процессе их удаления, но это большая работа. В этом случае часть «eval'd» завершается вызовом функции. Таким образом, если я добавлю дополнительную функцию и поставлю в нее «глобальную», она обратится к глобальной функции области видимости, но код eval'd не будет, если я не добавлю другую глобальную ссылку на одну и ту же переменную. Мой вопрос в том, что это вызовет какие-либо головные боли. В конце концов, мы разорвем все это, но в то же время я должен справиться с этим, насколько смогу. – Scott
Если вы выполняете назначение в функции, оно присваивает глобальную переменную. При необходимости это создаст переменную. Но просто наличие глобального заявления само по себе не создает переменную. – Barmar