Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Глобальные переменные 
:(
    Опции темы
kilogram
Дата 30.3.2012, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 19.3.2012

Репутация: -1
Всего: 0



Читаю в книге про глобальные переменные.
Правильно ли так объявлять глобальные переменные? Удобно и хорошо ли это? Вижу тут удобный доступ сразу из локальной функции прямо в глобалный массив.

Код

<html><body>
<?php
$monthes = array(
1 => "Январь",
2 =>"Февраль",
3=>"Март",
4=>"Апрель"
);
function getMonthName($n){
    global $monthes;
    return $monthes[$n];
}
echo getMonthName(2);
?>
</body></html>


PM MAIL   Вверх
Valinur
Дата 30.3.2012, 02:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 21.9.2007
Где: Москва

Репутация: 4
Всего: 6



Обычно глобальные переменные говорят о непродуманной архитектуре и структуре приложения. 
Это конечно же ИМХО.
В вашем примере этот массив можно спокойно передать в  функцию. 

При ООП массив может выступать в роли поля объекта, который можно будет использовать в методе как $this->monthes
--------------------
Не бойтесь совершенства, Вы все равно его не достигнете (с) ...
PM MAIL   Вверх
Vardoulacha
Дата 30.3.2012, 05:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 184
Регистрация: 11.8.2005

Репутация: 7
Всего: 8



kilogram, можно спать спокойно, код верный, только это немного не глобальная переменная )) вернее под фразой "глобальная переменная" можно понимать 2 понятия, настоящая глобальная переменная будет работать при включении опции PHP register_globals = on и тогда переменные могут быть доступны внутри любых функций без всяких global $par и вот это как раз есть большое зло в шестой версии PHP вроде даже убирают вообще register_globals

а вот использование global $par как раз позволяет передать доступ к переменной в нужную функцию чтобы переменная была объявлена где-то вверху и доступна для чтения\изменений внутри тех функций где это указано через global $par

вот как-то так
PM MAIL   Вверх
Gold Dragon
Дата 30.3.2012, 07:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



Глобальные переменные - это зло(!) Избавляйся от них, ищи другие решения


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Vardoulacha
Дата 30.3.2012, 07:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 184
Регистрация: 11.8.2005

Репутация: 7
Всего: 8



вот здесь в комментах идет обсуждение зло global или нет
PM MAIL   Вверх
Gold Dragon
Дата 30.3.2012, 08:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: 10
Всего: 71



ну ничего нового в этой статье нет smile Один из любителей глобальных описал просто свой опыт ....

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

Даже не будем касаться безопасности.. Представим проект в котором задействовано большое количество людей и каждый пишет расширения для проекта. Самое элементарное, как отследить что находится в тот или иной момент в Глобальной??? Все функции и методы должны чётко знать что и получают и что возвращают. Иначе в один прекрасный момент получится так что кто-то поменял данные в глобальной, а другие об этом не узнали и повыскакивали ошибки..

А в данной ситуации, я бы создал класс для подобных глобальных переменных, да и получал бы их через статичные методы..


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1034 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.