| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Глобальные переменные в функции |
| Автор: sidd 21.12.2007, 22:41 |
| Изначально в функции недоступны глобальные переменные. Решить эту проблему можно функцией global, но это не удобно, так как придется объявлять все необходимые мне переменные. Можно ли как-то сделать, чтоб в функции сразу были доступны для использования все глобальные переменные? |
| Автор: sidd 21.12.2007, 23:34 |
| flashaa, благодарю. |
| Автор: Mal Hack 21.12.2007, 23:39 |
| Что значит не доступны? Глобальные переменные на то и глобальные, что доступны везде. Другое дело, что изменяя их вы не изменяете их глобально, для этого global нужен. |
| Автор: sidd 22.12.2007, 00:09 | ||
Ясно. Я неправильно выразился |
| Автор: vasac 22.12.2007, 15:46 | ||
А для доступа global не нужен? |
| Автор: SelenIT 22.12.2007, 15:56 | ||||
Мануал, http://php.net/global, иного мнения...
flashaa, про регистр только не забывайте ;) |
| Автор: Mal Hack 22.12.2007, 16:21 |
| SelenIT, нету у меня сервака проверить, может быть и проглючил.. Привык, что в Сях - так, как написал я. В ПХП я клобальные вообще не использую... |
| Автор: flashaa 22.12.2007, 17:40 | ||
| В PHP у каждой ф-ции СВОЯ область видимости. Поэтому переменные, объявленные выше, в самой ф-ции недоступны. Для доступа к ним нужен global, который означает вот что:
Есть набор суперглобальныз переменных, которые видны отовсюду- $_REQUEST, $_SESSION, $GLOBALS и тп. |
| Автор: madFobos 27.12.2007, 09:06 |
| Если в функции нужно использовать слишком много глобальных переменных, то эта функция не есть правильная, из нее нужно создавать класс и т.п. Как бы сам PHP говорит, что global по сути не лучший способ и его нужно при возможности обходить. Однако если все же нужно в функции использовать множество глобальных переменных без их объявления, то пожалуйста: $GLOBALS['var_name'] Еще как вариант, если переменные не изменяются нигде, то можно их обявлять как константы (они тоже имеют суперглобальную область видимости, т.е. везде) |
| Автор: FractalizeR 27.12.2007, 20:23 | ||
Подводя итог беседы Они все доступны через super-global массив $GLOBALS |