В PHP:
require
vs. включить
?require_once
vs. include_once
?Есть также require
и include_once
.
Так что ваш вопрос должен быть...
require
vs. включить
?require_once
vs. требуют
Ответ на 1 описан здесь.
Функция require () идентична include (), за исключением того, что она обрабатывает ошибки по-разному. Если возникает ошибка, функция include () генерирует предупреждение, но скрипт продолжит выполнение. Require () генерирует фатальную ошибку, и скрипт остановится.
Ответ на 2 можно найти здесь.
Оператор require_once () идентичен require (), за исключением того, что PHP проверит, был ли файл уже включен, и если да, не включать (требует) его снова.
Использовать
требуют когда файл требуется вашим приложением, например. важный шаблон сообщения или файл, содержащий переменные конфигурации, без которых приложение сломалось бы.
require_once
когда файл содержит содержимое, которое может привести к ошибке при последующем включении, например,.
function important () {/ * важный код * /}
определенно необходим в вашем приложении, но поскольку функции не могут быть повторно объявлены, их не следует включать снова.
включить когда файл не требуется и поток приложения должен продолжаться, когда он не найден, например,. отлично подходит для шаблонов, ссылающихся на переменные из текущей области или что-то в этом роде
include_once необязательные зависимости, которые могут привести к ошибкам при последующей загрузке или удаленному включению файла, которые вы не хотите делать дважды из-за накладных расходов HTTP
Но в основном, это зависит от вас, когда использовать какой.
Я предлагаю просто использовать require_once
99,9% времени.
Использование require
или include
вместо этого подразумевает, что ваш код не может быть повторно использован в другом месте, т.е. что сценарии, которые вы извлекаете, на самом деле исполняют код вместо того, чтобы делать доступным классом или некоторыми функциональными библиотеками.
Если вам требуется / включает код, который выполняется на месте, это процедурный код, и вам нужно узнать новую парадигму . Как объектно-ориентированное программирование, функциональное программирование или функциональное программирование.
Если вы уже выполняете OO или функциональное программирование, использование include_once
в основном будет задерживаться , когда в стеке вы найдете ошибки / ошибки. Хотите знать, что функция do_cool_stuff ()
недоступна, когда вы переходите к ней позже, или момент, когда вы ожидаете, что она будет доступна , требуя библиотеку? Как правило, лучше сразу узнать, что вам нужно и чего вы ожидаете, поэтому просто используйте require_once
.
Кроме того, в современном ООП просто автозагрузка ваших занятий при использовании.
Разница между функциями _once и без функций _once: без кода _once будет снова включен, тогда как с функциями _once PHP отслеживает включенные файлы и будет включать его только один раз.
Разница между требованием и включением: Если требуемый файл не найден, PHP выдаст фатальную ошибку, тогда как для включения будет выдано только предупреждение.
include ()
выдаст предупреждение, если оно не может включать файл, но остальная часть скрипта будет запущена.
require ()
бросит E_COMPILE_ERROR
и остановит скрипт, если он не может включить файл.
Функции include_once ()и
require_once ()` не будут включать файл во второй раз, если он уже включен.
Смотрите следующие страницы документации:
Всякий раз, когда вы используете require_once ()
, можно использовать в файле для включения другого файла, когда вам нужен вызываемый файл только один раз в текущем файле.
Здесь в примере у меня есть test1.php.
<?php
echo "today is:".date("Y-m-d");
?>
и в другом файле, который я назвал test2.php
<?php
require_once('test1.php');
require_once('test1.php');
?>
поскольку вы смотрите m, требующий файл test1 дважды, но файл будет включать test1 один раз, а для вызова во второй раз это будет игнорироваться. И без остановки отобразит вывод один раз.
Всякий раз, когда вы используете 'include_once ()`, можно использовать в файле для включения другого файла, когда вам нужен вызываемый файл более одного раза в текущем файле. Здесь в примере у меня есть файл с именем test3.php.
<?php
echo "today is:".date("Y-m-d");
?>
И в другом файле, который я назвал test4.php
<?php
include_once('test3.php');
include_once('test3.php');
?>
при просмотре m, включая файл test3, будет включать файл один раз, но остановит дальнейшее выполнение.
Используйте «include» для многоразовых шаблонов PHP. Используйте «требуют» для необходимых библиотек.
«* _once» хорош, потому что он проверяет, загружен ли файл или нет, но это имеет смысл только для меня в «require_once».
Этот вопрос был задан семь лет назад, и ни один из ответов не дает практической помощи по этому вопросу. В современном программировании PHP вы в основном используете required_once
только один раз, чтобы включить свой класс автозагрузчика (часто автозагрузчик composer), и он загружает все ваши классы и функции (файлы функций необходимо явно добавить в файл composer.json
быть доступным во всех других файлах). Если по какой-либо причине ваш класс не загружается с автозагрузчика, вы используете require_once
для его загрузки.
Есть некоторые случаи, когда нам нужно использовать «требуй». Например, если у вас действительно большое определение массива, и вы не хотите добавлять его в исходный код определения класса, вы можете:
<?php
// arr.php
return ['x'=>'y'];
<?php
//main.php
$arr= require 'arry.php'
Если файл, который вы намереваетесь включить, содержит что-то исполняемое или объявляет некоторые переменные, вам почти всегда нужно использовать require
, потому что, если вы используете require_once
отдельно от первого места, ваш код не будет выполнен и / или ваши переменные не будут инициироваться молча, вызывая ошибки, которые абсолютно трудно точно определить.
На самом деле нет практического варианта использования include
и include_once
.
Разница в ошибке генерируются команды. С require
файл, который вы хотите использовать, действительно необходим и, таким образом, генерирует E_ERROR
, если он не найден.
require ()
идентиченinclude ()
за исключением случаев, когда сбой, он также приведет к фатальной ошибке уровняE_ERROR
.
include
генерирует ошибку E_WARNING
только в случае сбоя, который более или менее тихий.
Поэтому используйте его, если файл необходим для работы оставшегося кода, и вы хотите, чтобы скрипт вышел из строя, файл недоступен.
Для * _once ()
:
include_once ()
может использоваться в случаях, когда один и тот же файл может быть включен и оценен более одного раза во время определенного выполнения скрипта, поэтому в этом случае это может помочь избежать таких проблем, как переопределение функций, переназначение значений переменных и т. д.
То же самое относится и к require_once ()
конечно.
Ссылка: require ()
, include_once ()
Вы должны сохранять определения классов и функций организованными в файлах.
Используйте require_once ()
для загрузки зависимостей (классы, функции, константы).
Используйте require ()
для загрузки файлов, похожих на шаблоны .
Используйте include_once ()
для загрузки необязательных зависимостей (классы, функции, константы).
Используйте include ()
для загрузки необязательных шаблоноподобных файлов .
Требовать критических частей, таких как авторизация и включать все остальные.
Несколько включений - это очень плохой дизайн, и их следует избегать вообще. Так что * _once не имеет значения.
Включить / Запросить вы также можете включать один и тот же файл более одного раза:
require () идентичен include (), за исключением случаев, когда сбой также приведет к фатальной ошибке уровня E_COMPILE_ERROR. Другими словами, он остановит скрипт, тогда как include () выдает только предупреждение (E_WARNING), которое позволяет сценарию продолжаться.
идентичен включению / требованию, за исключением того, что PHP проверит, был ли файл уже включен, и если да, не включит (требует) его снова.
include ()
создаст предупреждение, когда не найдет файл, ноrequire_once ()
сгенерирует фатальную ошибку.
Другое дело, если файл включен раньше. Тогда require_once ()
не будет включать его снова.
В возрасте автозагрузчиков PSR-0 / PSR-4
, может быть совершенно ненужным использовать любое из утверждений, если все, что вам нужно, это сделать некоторые функции / классы доступными для вашего кода (конечно, вам по-прежнему необходимо require_once
autoloader в вашем файле начальной загрузки и шаблоны include
, если вы все еще используете PHP в качестве движка шаблонов).
Из руководства:
require ()
идентиченinclude ()
за исключением случаев, когда сбой, он также приведет к фатальной ошибке уровняE_COMPILE_ERROR
. Другими словами, он остановит скрипт, тогда какinclude ()
выдает только предупреждение (E_WARNING
), которое позволяет сценарию продолжаться.
То же самое верно для вариантов _once ()
.
Я использовал функцию, как показано ниже:
function doSomething() {
require_once(xyz.php);
....
}
В xyz.php были объявлены постоянные значения.
Я должен вызвать эту функцию doSomething () из другого файла скрипта PHP.
Но я наблюдал поведение при вызове этой функции в цикле, поскольку первая итерация doSomething () получала постоянные значения в xyz.php
, но позже каждая итерация doSomething ()
не могла получить постоянные значения, объявленные в xyz .php
.
Я решил свою проблему, переключившись с require_once ()
на include ()
, обновленный код doSomething ()
приведен ниже:
function doSomething() {
include(xyz.php);
....
}
Теперь каждый итерационный вызов doSomething ()
получает постоянные значения, определенные в xyz.php
.
& NBSP ;
Когда следует использовать require
или include
?
Функции require
и include
выполняют одну и ту же задачу, т.е. включает и оценивает указанный файл, но разница в том, что require
вызовет фатальную ошибку, когда указанное местоположение файла будет недействительным, или для любой ошибки, тогда как include
сгенерирует предупреждение и продолжит выполнение кода.
Таким образом, вы можете использовать функцию require
в случае, когда файл, который вы пытаетесь включить, является сердцем системы и может оказать огромное влияние на остальную часть кода, и вы можете использовать функцию include
когда файл, который вы пытаетесь включить это простой файл, содержащий менее важный код.
И моя личная рекомендация (для менее важного кода) это означает, что функция require
везде в вашем коде, пока она находится на стадии разработки, так что вы можете отладить код, а затем заменить все функции require
функцией include
, прежде чем переводить его в производство, чтобы при отсутствии каких-либо ошибок это не повлияет конечный пользователь и остальная часть кода выполняются правильно...
Когда следует использовать require_once
или require
?
Основное различие между require
и require_once
равно require_once
проверит, включен ли файл или нет, если он уже включен, тогда он не будет включать файл, тогда как функция require
будет включать файл независимо от того, файл уже включен или нет.
Поэтому в тех случаях, когда вы хотите снова и снова включать какой-либо фрагмент кода, используйте функцию require
, тогда как если вы хотите включить какой-либо код только один раз в свой код, используйте require_once
.
Используйте функцию require , когда вам нужно загрузить любой класс, функцию или зависимость.
Используйте функцию include , когда вы хотите загрузить файл в стиле шаблона
Если вы все еще не уверены, просто используйте require_once на все времена.
одну вещь, которую я заметил, при использовании include я могу получить доступ только к функциям включенных файлов из файла, который его включил. С помощью require_once я могу запустить эту функцию во втором файле required_once.
также: я рекомендую добавить
if(file_exists($RequiredFile)){
require_once($RequiredFile);
}else{
die('Error: File Does Not Exist');
}
Потому что, когда require_once убивает страницу, он может иногда повторять каталог файлов вашего сайта
Вот пользовательская функция, которую я сделал, чтобы требовать файлы:
function addFile($file, $type = 'php', $important=false){
//site-content is a directory where I store all the files that I plan to require_once
//the site-content directory has "deny from all" in its .htaccess file to block direct connections
if($type && file_exists('site-content/'.$file.'.'.$type) && !is_dir('site-content/'.$file.'.'.$type)){
//!is_dir checks that the file is not a folder
require_once('site-content/'.$file.'.'.$type);
return 'site-content/'.$file.'.'.$type;
}else if(!$type && file_exists('site-content/'.$file) && !is_dir('site-content/'.$file)){
//if you set "$type=false" you can add the file type (.php, .ect) to the end of the "$file" (useful for requiring files named after changing vars)
require_once('site-content/'.$file);
return 'site-content/'.$file;
}else if($important){
//if you set $important to true, the function will kill the page (which also prevents accidentally echoing the main directory path of the server)
die('Server Error: Files Missing');
return false;
}else{
//the function returns false if the file does not exist, so you can check if your functions were successfully added
return false;
}
}
пример использования:
$success = addFile('functions/common');
if($success){
commonFunction();
}else{
fallbackFunction();
}