[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: отличие include от require
include_require_user
Привет всем, всегда использовал функцию include чтобы прикрепить к коду файл с функциями, и только сейчас задался вопросом а в чем же принципиальное отличие функций include, require и соответственно include_once и require_once.
В чем разница и в каком случае надо использовать ту или иную функцию было бы хорошо если просветили smile.gif спасибо



Спустя 4 минуты, 47 секунд (18.07.2011 - 20:17) Haotarez написал(а):
все просто - include и require - это одно и тоже за исключением случая когда запрашиваемый файл не найден. В таком случае скрипт после include продолжит работу, а после require остановит выполнение скрипта.

Говорящие постфиксы once означают выполнение включения всего один раз

Спустя 6 минут, 18 секунд (18.07.2011 - 20:23) Guest написал(а):
а зачем вот нужно выбирать файлы скажем несколько раз?? ну вот для include?
прикрепил я файл в нем функции, тоесть к этому файлу можно обратиться будет много раз? а вот если я бы если include_once использовал то скажем взял бы одну функцию один файл и все, или как вот усвоить не могу этот момент что значит многократное включение файла а что значит однократное???
кстати спасибо за простое объяснение smile.gif

Спустя 3 минуты, 59 секунд (18.07.2011 - 20:27) Haotarez написал(а):
Цитата
а зачем вот нужно выбирать файлы скажем несколько раз?? ну вот для include?

допустим есть файл в нем функция которая должна быть в последствии перегружена - c include_once не получится ее перегрузить


Спустя 33 минуты, 10 секунд (18.07.2011 - 21:00) alex12060 написал(а):
Ну допустим есть 2 файла -

1.php

<h2>test</h2><br />


и

2.php

<h1>TEST</h1><br />


и есть главный файл - index.php

Пробуем с require() и include()


<?php
include('1.php');
include('2.php');
include('3.php'); // Нету такого файла

echo '<i>I work!</i>';
?>


Тут вот что:

подключаются 2 файла, но а 3-го - нет, но работа скрипта не прекращается и страница отрабатывает полностью. Т.е, подключение в include идет сразу, раз за разом.
В ХТМЛ будет так:


<h2>test</h2><br />
<h1>
TEST</h1><br />
<i>
I work!</i>


А если вот так:


<?php
require('1.php');
require('2.php');
require('3.php'); // Нету такого файла

echo '<i>I work!</i>';
?>


Функция будет работать, подключая все, что доступно. Но если функция видит, что файла нет, то выводит ошибку и аварийно завершает работу. Т.е вывод будет таким:


<h2>test</h2><br />
<h1>
TEST</h1><br />
<!-- тут ошибка -->


Вот в этом глобальное отличие 2-х функций.

Рассмотр постфикса _once()

Вот те же 2 примера у нас. once() с англ - единожды. Т.е функция подключается (файл) только 1 раз. Если сделать так:


<?php
include('1.php');
include('1.php');
include('3.php'); // Нету такого файла

echo '<i>I work!</i>';
?>


То выведется вот это:


<h2>test</h2><br />
<h2>
test</h2><br />
<i>
I work!</i>


Но а если так:


<?php
include_once('1.php');
include_once('1.php');
include('3.php'); // Нету такого файла

echo '<i>I work!</i>';
?>


то выведется вот это:


<h2>test</h2><br />
<i>
I work!</i>


Как видно, вывелось 1 раз, хотя подключали 2 раза. Функция require_once() работает так-же, как и include_once(), только, как было выше сказано, если нет файла, скрипт аварийно завершает работу.

Спустя 16 минут, 21 секунда (18.07.2011 - 21:17) include_require_user написал(а):
Спасибо огромное теперь ясно biggrin.gif

Спустя 3 минуты, 44 секунды (18.07.2011 - 21:20) Haotarez написал(а):
Фиговый из меня разъяснитель sad.gif

Спустя 2 часа, 50 минут, 50 секунд (19.07.2011 - 00:11) inpost написал(а):
Дважды никогда не за чем делать.
Если ты подгружаешь классы, функции, то их необходимо объявить лишь 1 раз, значит _once, если необходимо HTML страницу, то тут любой шаблонизатор будет лучше, чем много раз вызывать include. То есть вообще нет смысла использовать без _once, по крайней мере я его не вижу.
А вот отличия уже выше сказали.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.