Не используйте глобальные переменные, это плохой дизайн, потому что он делает ваш код запутанным и трудным для чтения. Есть гораздо лучшие альтернативы.
Учитывая ваш простой пример, вы можете просто вернуть значение из метода:
function drop()
{
if(file_exists("test.php"))
{
$ddr="ok";
}
$test_end="ready";
return $test_end;
}
$test_end = drop();
Если у вас более сложный случай и по какой-то причине не можете вернутьзначение, передайте переменную по ссылке, добавив к ней префикс &
:
funtion drop(&$test_end)
{
if(file_exists("test.php"))
{
$ddr="ok";
}
$test_end="ready";
}
$test_end = null;
drop($test_end);
echo $test_end; // will now output "ready"
Передача по ссылке также не является хорошим шаблоном, поскольку она все еще делает ваш код запутанным.
Подробнее о том, почему глобальные переменные плохие
Проблема в том, что, если я смотрю на ваш код, и все, что я вижу, это:
drop();
echo $test_end;
Я понятия не имею, как $ test_endполучил набор или какова его ценность. Теперь предположим, что у вас есть несколько вызовов методов:
drop();
foo();
bar();
echo $test_end;
Теперь мне нужно взглянуть на определение всех этих методов, чтобы выяснить, каково значение $ test_end. Это становится очень большой проблемой в больших кодовых базах.