2010-09-02 3 views
11

Я знаю, что основное использование PHP требует, требует один раз, включать и включать один раз. Но я смущен, когда буду использовать их.В чем разница между PHP и включать?

Пример: У меня есть 3 файла, например: settings.php, database.php и index.php.

В database.php файла, я написал:

require_once 'settings.php'; 

, а затем в index.php, я писал:

require_once 'settings.php'; 
require_once 'database.php'; 

так загружает settings.php два раза, это нормально? Любые подсказки, использующие эти функции?

+0

Вопросы, подобные этому, не должны быть wiki сообщества.Не большое дело, как намек на будущее –

+0

thx для информации, я новичок на этом сайте :) – Vina

ответ

17
  • include включает в себя файл и генерирует предупреждение, если файл не был найден.

  • require содержит файл и генерирует фатальную ошибку, если файл не найден.

  • include_once и require_once сделать то же самое, но только , если файл еще не загружен.

Однако потребность в одной из _once функций, как правило, является признаком плохого дизайна. Вы должны создавать свои скрипты таким образом, чтобы четко определять, что входит в него.

Выберите одно место для settings.php, чтобы войти в него - возможно index.php. Не нужно дополнительно включать его в database.php.

+8

+1. Хотя, nitpick/opinion: Я не думаю, что согласен с тем, что одна из функций '_once' обычно является признаком плохого дизайна. В конце концов, автозагрузчики в значительной степени делают то же самое. Я бы сказал, что '_once' всегда должен использоваться для файлов, содержащих только объявления функции/класса/константы, а остальные - для фрагментов сценария. В этом случае я бы сказал, что * не *, используя '_once', обычно [!] Признак плохого дизайна. '_once' (в отсутствие автозагрузчика), позволяет вашему коду быть прилично модульным. (В данном конкретном случае я бы согласился, что он должен быть включен только один раз в первую очередь.) – pinkgothic

+1

@pinkgothic Я должен не согласиться. Автозагрузчики работают по одному и тому же принципу *, но * если они стоят своей соли, они выполняют проверку 'class_exists()' перед попыткой включения. По моему опыту (читайте, также * own * experience!) 'Require_once()' * обычно * означает «Я не уверен, был ли этот файл уже включен в какой-то другой момент, потому что я не полностью понимаю структуру моего проекта «. насколько я вижу, любое другое использование '_once' может быть предотвращено путем проверки того, присутствует ли тот ресурс, который я собираюсь включить, - будь то функция или класс. –

+0

Тем не менее, я уверен, что есть законные случаи, когда «_once» - это просто быстрое и быстрое решение. –

2

Вы не загружаете settings.php два раза, согласно PHP documentation on require_once;

require_once() утверждение идентично требуют(), за исключением PHP будет проверить, если файл уже был включен, и если да, то не включают (требуется) снова.

0

require_once будет проверять, включен ли файл и не включать его снова, поэтому не беспокойтесь, он не будет загружать settings.php дважды.

0

если ваш файл имеет важное значение, я думаю, вы должны использовать «требовать»,
, но если нет, то я всегда использую включает, как PEKA ответила
требуют включает файл и бросает фатальную ошибку, если файл не был найден ,

-2

include_once и require_once использовать в Php для добавления одной страницы на другую страницу Пример: вы хотите добавить страницу подключения к базе данных conn.php в edit page edit.php, вы можете ее использовать. Но между include_once и require_once существует другое значение, если функция include_once получает какую-либо ошибку, она будет предупреждать вас и выполнять код, но функция require_once обнаруживает какую-либо ошибку, она остановит сценарий и не выполнит код.