За последние 24 часа нас посетили 17958 программистов и 1671 робот. Сейчас ищут 1115 программистов ...

Использование require_once

Тема в разделе "Прочие вопросы по PHP", создана пользователем vovan1409, 28 апр 2012.

  1. vovan1409

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

    С нами с:
    14 мар 2012
    Сообщения:
    33
    Симпатии:
    0
    Прочитал, что подключение файлов, через require_once обохидся очень дорого(как я понял в смысле скорости загрузки страницы)...почитал мануал, но моя слабая голова, так и не поняла, когда лучше использовать require, а когда require_once? Например для подключения файла с функциями, или для html-файла. А может вообще для каких, то целей выбрать include?
     
  2. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Где это написано, что "очень дорого"? Ты вряд ли заметишь разницу, если страница будет выдана не за 0.0002 секунды, а за 0.002. Притом, что какой-нибудь Битрикс вообще выдаёт страницы по секунде и больше.
    Не надо заморачиваться (пока что). Когда будут большие проекты и когда будут изучены разные методы реального ускорения выдачи страниц, тогда и наступит время выбора, использовать require_once или нет.

    Добавлено спустя 1 минуту 56 секунд:
    Во всяком случае к тому времени ты уже не вопросы будешь задавать, а отвечать на них.
     
  3. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Ну как бы семейство _once, даст только1 раз подключить скрипт.

     
  4. Clickbeetle

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

    С нами с:
    19 апр 2012
    Сообщения:
    16
    Симпатии:
    0
    Касательно того,что лучше использовать: Если в проекте используется автозагрузка файлов и вы ,например, интсанцируете один и тот же класс несколько раз, то чтобы автозагрузка каждый раз не подгружала один и тот же файл дважды используйте require_once. Короче говоря, если вы уверены что файл будет загружен только один раз то используйте require, в против случае require_once. А разница между include и require только в способах обработки ошибки, include выдает предупреждение и скрипт продолжает работу, а в случае require нет. Учитывая, что обычно без подключения нужного файла скрипт работать не сможет, имеет смысл использовать require. Как исключение опять же автозагрузка классов. Учитывая, что функций для автозагрузки может быть несколько зарегистрировано, то ваша функция не должна завершать работу и там используют include_once.
     
  5. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.108
    Симпатии:
    1.243
    Адрес:
    там-сям
    Вот честно есть большие сомнения насчет "дороговизны" *_once, проверить на тестах лениво, т.к. не очень это важно.

    Надо понимать, что если мы НЕ используем "once", то надо всё равно как-то гарантировать однократное подключение. Это может побочным эффектом самой архитектуры приложения, а может быть реализовано костылями вроде
    define('MODULE_LOADED', 1) и if (!defined('MODULE_LOADED')).
    Костыли сами по себе "небесплатные" и попробуйте сравнить в тестах что дороже. Обычно встроенные в язык механизмы работают быстрее чем ваш код!!!

    Лично я выбираю once / не-once, костыли / без костылей по простому принципу: если я пишу дополнение к существующему движку, использую сложившуюся в нём практику. «Со своим самоваром в Тулу не ездят».
    А если код на 100% мой, то там однократность гарантируется самой архитектурой и нет нужды в дополнительных проверках.