Проблема с глобальной переменной функции

musician

Новичок
Здравствуйте. Описываю ситуацию.

Есть файл register.php например. В нем создается подключение к базе данных и объект класса page. Класс page отвечает за вывод страницы целиком. Шапка, меню, контент, футер. Соответственно все его функции представляют по сути include(...) определенных блоков. В одном из блоков идет обработка переданных на страницу переменных методом POST. В обработке переменных задействована след функция. Она принимает переменную, переименовывает её и объявляет глобальной (ну т.е. global $x).

Проблема в следующем. При вызове страницы www.домен.ру/register.php функция не работает. Точнее она работает, но новая переменная (которую создает функция) существует только внутри этой функции, а за пределами её не существует.
А если вызвать тот вrлючаемый в register.php блок напрямую, www.домен.ру/blocks/register/user_new.php, то всё работает. Новая созданная функцией переменная существует и за пределами.

Как решить данную проблему?
 

С.

Продвинутый новичок
А если вызвать тот вrлючаемый...
Опечатка прямо по Фрейду. А чтоб ничего не вглючило, надо хорошенечко отладить код. Где-то есть ошибка, но с этого расстояния нам ее не видно. Вы поближе к коду, посмотрите сами.
 

musician

Новичок
)) вКлючаемый....
Код уже пересмотрел несколько раз... уже понять не могу где искать.
Ладно бы, если этот блок с функциями не включался в файл. Но есть точно, и функции работают. Просто почему то переменные действую только внутри функции.
 

zerkms

TDD infected
Команда форума
Переменная, объявленная как global, существует именно в глобальном адресном пространстве.

Стало быть если в другом месте они не работают, то почти наверняка в этом другом месте текущая область видимости не глобальная, а локальная (точно так же ограниченная функцией/методом). Так что также объяви её глобалом и там тоже и радовайся.

ps: глобалсы - зло.
 

С.

Продвинутый новичок
Код уже пересмотрел несколько раз... уже понять не могу где искать.
Вот ты пересмотрел код много раз и не нашел. И полагаешь, что мы даже не видя кода вот так сходу найдем?
 

musician

Новичок
zerkms, не совсем понял о чём Вы сказали.
Прикладываю архив. Там выдержка кода так сказать.

Посмотрите, пожалуйста.
 

Вложения

zerkms

TDD infected
Команда форума
musician
Я сказал о том, что почти наверняка нужно глобал указывать в обоих местах: где переменная изначально определена, и где предполагается её использовать.

Код смотреть не будем - вы же программист, вот и учитесь отлаживать, это и есть работа программиста.
 

musician

Новичок
zerkms
Получилось. Работает. Спасибо большое! Подсказка помогла)
 
Сверху