За последние 24 часа нас посетили 16997 программистов и 1744 робота. Сейчас ищут 948 программистов ...

Как определить функцию единожды в часто вызываемом коде?

Тема в разделе "PHP для новичков", создана пользователем borus, 23 янв 2015.

  1. borus

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

    С нами с:
    16 апр 2012
    Сообщения:
    161
    Симпатии:
    0
    Здравствуйте.

    Столкнулся с тем, что если функция определяется единожды, то сайт работает хорошо. Если кусок кода с определением моей функции вызывается несколько раз по ходу построения страницы, то это приводит к поломке сайта. Просветите, пожалуйста, где можно почитать как правильно разрулить данную ситуацию. Пробовал определение функции вынести во внешний файл, подключаемый через require_once - не помогло.
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Вообще ничего не понятно.
     
  3. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    Значит еще гдето осталось определение этой функции. нужно чтобы она была определена в единственном месте в коде.
     
  4. VLK

    VLK Старожил

    С нами с:
    15 дек 2013
    Сообщения:
    3.010
    Симпатии:
    58
    1. что за сайт
    2. что за страница
    3. что за функция
    4. в чем конкретно заключается поломка
    5. что вообще за бред.

    направление ясно?
     
  5. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.596
    Симпатии:
    1.764
    Мне кажется, что решение в require_once или include_once.
     
  6. VaneS

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

    С нами с:
    16 ноя 2011
    Сообщения:
    636
    Симпатии:
    4
    Адрес:
    Россия
    Ничо не ясно
     
  7. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    грамотное решение это следовать стандартам, которые рекомендуют в каждом php-файле держать либо декларации, либо код, создающий побочный эффект: вывод, изменение данных, но не то и другое одновременно. тогда не будет нужды подключать файл с декларацией более одного раза.

    обходные решения это всякие if !function_exists(), if !defined или require_once.
     
  8. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Есть еще вариант.
    Автор, у тебя случайно нет функций, объявленных внутри функций? В таком случае, при вызове функции-родителя, у тебя произойдет переобъявление внутренней функции. И ошибка, разумеется. Если это ну никак нельзя разрулить иначе, просто оберни внутреннюю функцию в
    Код (Text):
    1. if(!function_exists("function_name")){}
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    А где же гифка с костылями?
     
  10. VaneS

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

    С нами с:
    16 ноя 2011
    Сообщения:
    636
    Симпатии:
    4
    Адрес:
    Россия
  11. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    пардон! Забыл!
    [​IMG]