PHP передает переменные между большим количеством функций - PullRequest
2 голосов
/ 15 февраля 2011

У меня есть около 30 переменных, которые мне нужно передать 3 функциям, например,

displayform () - где некоторые данные формы извлекаются из БД, а некоторые необходимо ввести в форму.

checkform () - проверяет правильность ввода всех данных.

errors () - отображает ошибки (если есть)

processform () - обрабатывает все данные и сохраняет ихв БД

Теперь я использую переменную GLOBAL $;чтобы передать эти переменные между функциями, но я должен объявить каждую переменную как глобальную в начале функции, и это приводит к большому файлу, поэтому я просто хочу знать, есть ли способ объявить переменные как глобальные (желательно только один раз), такчто все функции могут их использовать?

Ответы [ 4 ]

4 голосов
/ 15 февраля 2011

Вы можете попробовать поместить все переменные в ассоциативный массив и просто передать этот массив между функциями, например:

$omgArray = array();
$omgArray['lolVar1'] = lolVar1;
$omgArray['wowVar3'] = wowVar3;

yeaaaFunction($omgArray);

function yeaaaFunction($omgArray){
    echo $omgArray['lolVar1'] . $omgArray['wowVar3'];
}
2 голосов
/ 15 февраля 2011

30 переменных?Помимо 30 переменных, которые ужасно поддерживать, наличие 30 глобальных переменных еще хуже.Однажды вы сойдете с ума ...

Используйте массив и передайте массив функциям в качестве аргумента:

$vars = array(
    'var1' => 'value1',
    'var2' => 'value2',
    ///...
);

displayform($vars);
//etc.

Узнайте больше о массивах .

0 голосов
/ 15 февраля 2011

Вы можете прочитать о шаблоне реестра, в зависимости от ваших данных, может быть полезным или нет.

0 голосов
/ 15 февраля 2011

У меня есть похожий сценарий, в котором я написал класс lib для обработки форм, аналогичный вашему. Я храню все данные формы в одном массиве внутри класса формы.

При перемещении данных формы за пределы класса я сериализую массив в формат JSON. Преимущество формата JSON (по сравнению с собственным сериализованным форматом PHP) состоит в том, что он очень хорошо обрабатывает вложенные массивы. Вы также можете преобразовать набор символов для всех полей формы за один вызов.

В моем приложении я храню все данные формы в виде строки JSON в базе данных. Но я думаю, все зависит от ваших потребностей.

...