18 Apr 2012

eldhenn: (Default)
На своей шкуре ощутил, что глобальные переменные - зло. И лучше всю, то есть вообще всю, логику распихивать по подпрограммам.

Была у меня глобальная переменная $last_apl. В глобальной области видимости был цикл, выбирал данные из базы, компоновал их в эту переменную, и время от времени вызывал обработку - process_apl($last_apl). В process_apl уже локальный параметр назывался просто $apl, но в одном месте остался вызов мутатора с параметром $last_apl, с глобальной переменной... А мутатор тот редко работал, в большинстве случаев он оставлял всё как есть.
Что мы имеем - проверка синтаксиса проходит успешно, и сам скрипт тоже работает успешно, почти всегда. Ну вроде когда-то результаты получились чуть-чуть не такие, но списал на глюки. А тут ткнули носом - неверный результат сформировался! Странно, думаю, вроде для таких случаев как раз особая логика и написана... Вытащил мутатор в тестовый скрипт, закинул в него данные - отработал, поменял, всё правильно. Чудеса... А чудеса объяснялись просто.
И ведь $last_apl сразу после вызова process_apl инициализировалась заново, поэтому любые изменения в ней пропадали, источниками ошибок стать не могли.

Profile

eldhenn: (Default)
Элдхэнн

Tags

September 2022

S M T W T F S
    123
45678910
11121314151617
181920 21222324
252627282930 

Expand Cut Tags

No cut tags