Вы можете определить $output
в основном сценарии, и импортировать его в функцию:
function output()
{
global $output;
Это вероятно, будет работать для вашей ситуации. Однако считается, что плохой практикой является использование глобального пространства переменных с такими вещами, и это справедливо. (Поверьте мне, я сделал это для лет. :)
Есть несколько других подходов, которые лучше подходят для долговременного качества кода и ремонтопригодности.
Глобальный массив конфигурации
Вы можете либо сохранить один глобальный массив для всех глобальных настроек. Сделайте это где-то в главном скрипте:
$config = array();
$config["output"] = "<html>.......</htmL>";
$config["user_language"] = "en";
.....
импортировать массив конфигурации в функцию следующим образом:
function output()
{ global $config;
echo $config["output"];
шаблон реестра
, если вы хотите сделать некоторое чтение, вы может использовать что-то более продвинутое, как шаблон реестра. Показанный сниппета here выглядит неплохим примером для реестра. Zend Framework также имеет класс для этого.
Но такие вещи, как реестр, действительно, действительно продвинуты и, вероятно, вам не нужны в данный момент. Я бы предложил использовать один центральный конфигурационный массив. Если возникнет необходимость в чем-то более сложном, конфигурационный массив легко найти и заменить.
Контекст: Are global variables in PHP considered bad practice?
Все, что должен сделать OP, это вернуть '$ output'. Тогда он может делать все, что захочет. Даже несмотря на то, что все предупреждения о том, что глобальное плохо, решение выше все еще предлагает использовать глобальное ключевое слово для решения проблемы. Использование шаблона реестра несколько лучше, но в основном он мало чем отличается от использования ключевого слова global. Это всего лишь меньше мусора в глобальном масштабе из-за ограничения данных в реестре – Gordon
@ Gordon да, но вопрос OP звучит так, как операция базы данных должна иметь место перед любым выходом - возможно, сделать переадресацию в случае ошибки. В этом случае ему понадобится место для хранения результата где-то. –
Не понимаю почему. Содержимое сохраняется в переменной. Если он вернет его из функции, он может назначить ее переменной в глобальной области действия и может делать с ней все, что захочет: обходить, изменять или выводить. И он может делать все, что он чувствует, прежде чем это делать. – Gordon