За последние 24 часа нас посетили 66145 программистов и 1616 роботов. Сейчас ищут 962 программиста ...

использование require / include

Тема в разделе "PHP для новичков", создана пользователем NeoXidant, 4 ноя 2011.

  1. NeoXidant

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

    С нами с:
    8 фев 2010
    Сообщения:
    121
    Симпатии:
    1
    Что лучше использовать? require или include? Или их аналоги с _once?
    Сейчас использую самописную функцию:
    PHP:
    1. function requireFile($file)
    2. {
    3.     if(file_exists($file)) {
    4.         require_once $file;
    5.     } else {
    6.         echo 'File '.$file.' doesn\'t exist';
    7.     }
    8. }
    плюсы, которые я вижу в этой функции:
    выведет ошибку(форматирование которой определяешь самостоятельно) даже при display_errors off в настройках PHP
    вывод случайно подключенного несколько раз файла - не возможен

    P.S. всего в проекте (пока) подключаю до 10 файлов (.php, .html), так что скорость не критична
     
  2. [vs]

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

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    require убивает скрипт, если требуемого файла не существует, include - нет.
     
  3. siiXth

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

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    Интересно , а в каком смысле убивает ? Время выполнения дольше ?
    И , если честно , мне даже после прочтения мануала не ясна разница между ним и include. Разница в обработке кода до (require) и во время (include) , но конкретного применения придумать не могу
     
  4. [vs]

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

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    В прямом. В этом и вся разница.
    они обе давно обрабатываются во время выполнения
     
  5. siiXth

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

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    вот именно что тогда получается никакой видимой разницы =D
     
  6. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    require - это типа
    if(!include()) exit;
     
  7. NeoXidant

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

    С нами с:
    8 фев 2010
    Сообщения:
    121
    Симпатии:
    1
    на форуме для новичков крутятся новички? :D
    require требует обязательного присутствия подключаемого файла и выдает критическую ошибку при его отстутствии, то есть страница прекращает загружаться вовсе, а include — выдает лишь предупреждение и загружает остальную часть страницы.
    Еще разница в том, что include может возвращать значение true или false
    пример:
    PHP:
    1.     if (include './vars.php')
    2.         echo 'TRUE';
    3.     else
    4.         echo 'FALSE';
    если файла не существует - выведет FALSE и продолжит выполнение скрипта

    require в подобном случае выведет fatal_error и остановит дальнейшее исполнение скрипта
     
  8. Mr. T

    Mr. T Активный пользователь

    С нами с:
    10 ноя 2010
    Сообщения:
    733
    Симпатии:
    0
    Адрес:
    Украина, г. Киев
    Читал в какой-то книжке, что include советуют использовать для подключения файлов шаблонов, а так require, сам использую require всегда, хорошо это или плохо - решать каждому самостоятельно :)
     
  9. krow7

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

    С нами с:
    12 авг 2009
    Сообщения:
    398
    Симпатии:
    0
    Адрес:
    из Азии
    include - подключит файл, если до строки с инклюдом дойдет дело.
    require - В ЛЮБОМ СЛУЧАЕ подключит перед началом работы скрипта файл.
    PHP:
    1. <?
    2. $var=false;
    3. if($var)
    4. {
    5.   include('somefile.php');
    6. }
    не подключится файл.

    а теперь так:
    PHP:
    1. <?
    2. $var=false;
    3. if($var)
    4. {
    5.   require('somefile.php');
    6. }
    и на момент $var=false; somefile.php УЖЕ будет подгружен.
     
  10. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    krow7
    Это твои собственные выводы или где-то есть такая информация?
    Мне кажется, что оба варианта подключаются только в случае, если вызов конструкции произошёл. А если нет - то нет. Во всяком случае анализ синтаксиса не происходит. Я специально в подключаемом файле понаделал синтаксических ошибок - и ничего, на ошибки не ругается, если $var = false;
     
  11. krow7

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

    С нами с:
    12 авг 2009
    Сообщения:
    398
    Симпатии:
    0
    Адрес:
    из Азии
  12. Mamont

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

    С нами с:
    5 дек 2010
    Сообщения:
    183
    Симпатии:
    0
    Самому слабо проверить?
    Это в какой версии так было? И было ли вообще?
     
  13. krow7

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

    С нами с:
    12 авг 2009
    Сообщения:
    398
    Симпатии:
    0
    Адрес:
    из Азии
    значит, php.su врет, либо в какой-то версии было, но теперь нет.
     
  14. [vs]

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

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    это было давно, php.su - сакс
    http://php.net/require
    как я уже и писал
     
  15. krow7

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

    С нами с:
    12 авг 2009
    Сообщения:
    398
    Симпатии:
    0
    Адрес:
    из Азии
    а мне он так нравился :(