За последние 24 часа нас посетили 18246 программистов и 1596 роботов. Сейчас ищет 941 программист ...

Глобальные переменные

Тема в разделе "PHP для новичков", создана пользователем topas, 14 апр 2008.

  1. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
     
  2. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    IMHO в PHP, языке, ориентированным в первую очередь на маленькие скрипты, глобальные переменные являются плюсом, упрощающим работу.
    Чтобы писать большие приложения, есть классы. Кроме того, многие пишут большие приложения по образу C++, разделяя приложение на несколько больших функций.
     
  3. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    [vs]
    Абсолютно с Вами не согласен -1
     
  4. Clone

    Clone Guest

    Глобальные переменные есть почти во всех языках программирования. И подход к ним везде практически одинаков. Мне понравилось как Макконнелл написал главу про глобальные переменные. Если коротко перефразировать - "не бойтесть использовать глобальные переменные, но используйте их только там, где это действительно необходимо, а также соблюдайте несколько простых правил"...
     
  5. Clone

    Clone Guest

    [vs], а кто сказал что PHP ориентирован на маленькие скрипты? Одно дело, что маленький скрипт будет действительно маленьким, а не как в бородатой шутке "пока программист C++ определяет константы, программист на Visual Basic уже пьёт пиво". Язык программирования лишь инструмент, причём PHP-то достаточно гибкий, так что юзать его можно и в маленьких скриптах и в больших CMS.
     
  6. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Изначально PHP был придуман для обработки форм и (!)эмулирования SSI. Что позволило легко писать BBS'ки...
    Что PHP может лучше, чем те же СиПП или Делфи? Даже на Perl'е можно писать полноценные shell-ы для никсов, PHP же это язык для web-программирования, и использовать его в отвлеченных целях - IMHO извращение. Ресурсоемкими задачами должны заниматься демоны, PHP должен только вызывать из и забирать результат работы :)
     
  7. Clone

    Clone Guest

    [vs], web-программирование != маленькие скрипты.
     
  8. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    А разве пишутся только простые сайты визитки? Есть очень большие проекты написанные на php (около 200 000 строк)
    При чем используется OOP и паттерны проектирования в полной мере.

    На php можно писать простенькие скрипты, но сегодня PHP не ограничивается этим.
     
  9. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Вообще, из пальца высасоно. Если проект цельный, то за переменными следят. Если проект "всякое в кучу", то ты не услидишь за переменными как бы не желал и какие бы умные книжки не читал. namespace не только в виде "оно есть в 5.3", а в виде префиксов-за**пефиксов. Предлагаю всем вместе на него бурно фетишировать.

    У PHP есть боооольшой минус. Его переменные либо полностью глобальны, либо полностью локальны. Исключая классы, где есть $this - глобальная переменная локального разлива.

    PHP:
    1. <?php
    2. $var = 'Hello';
    3.  
    4. function doit(){
    5.     echo $var;
    6. }
    7.  
    8. doit(); // кукиш
    Приходится
    PHP:
    1. <?php
    2. $var = 'Hello';
    3.  
    4. function doit(){
    5.     global $var;
    6.     echo $var;
    7. }
    8.  
    9. doit(); // Hello
    А должо быть
    PHP:
    1. <?php
    2. $var = 'Hello';
    3.  
    4. function doit(){
    5.     echo $var;
    6. }
    7.  
    8. doit(); // Hello
    Если переменная перебивается в функции это новая, локальная переменная. Если стоит в global, то перебивается глобально. Python в этом плане сильно рулит.

    Но ребят с фетишом на неймспейсы это особо не мучает. Мы просто фетишируем себе тихонько.
     
  10. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Ибо PHP не для этого существует. И потому не исправляют ситуацию с переменными.
     
  11. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Ну, это изначально в 95-ых ) Сейчас он уже давно для этого не служит.
    +1

    Лично я, глобальные переменные не использую и не вижу существенного минуса в том, что я их не использую... С локальными работать гораздо удобнее, проще и меньше мороки.
     
  12. dark-demon

    dark-demon Активный пользователь

    С нами с:
    16 фев 2007
    Сообщения:
    1.920
    Симпатии:
    1
    Адрес:
    леноград
    lexa, ознакомься, пожалуста, со значением слова "фетиш".
    по теме - неконтролируемые замыкания приводят к очень трудноуловимым ошибкам вида: забыл проинициализировать переменную - получи глобальную. Очень интересные результаты можно получить, если допустить такую ошибку в рекурсивной функции.
     
  13. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
    До сих пор опасаюсь JS из-за этого.
     
  14. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Прежде, чем предлагать, сам ознакомся.