Я обычно использую процедурное программирование на PHP и смотрю здесь на другие вопросы, спрашивающие, как избежать глобальных изменений, в ответах часто вместо этого использовалось ООП. Разве нельзя избежать глобальных значений при процедурном программировании?
Например, я могу написать следующую функцию двумя способами. Оба имеют свои преимущества и недостатки. Если я часто вызываю эту функцию, то она выглядит раздутой со вторым методом, поскольку она должна каждый раз передавать все переменные. Альтернативой является первый метод, в котором функция просто передает значение, а все переменные являются глобальными переменными в функции.
doWhatIneedtodo(2);
function doWhatIneedtodo($val) {
global $this; global $that; global $theother;
if ($val == 1) {
$this++;
} else
if ($val == 2) {
$that++;
} else
if ($val == 3) {
$theother++;
}
}
doWhatIneedtodo(2,$this,$that,$theother);
function doWhatIneedtodo($val,&$this,&$that,&$theother) {
if ($val == 1) {
$this++;
} else
if ($val == 2) {
$that++;
} else
if ($val == 3) {
$theother++;
}
}
Или, может быть, есть лучший способ сделать это, чего у меня нет?