php — Разница в способах включения файлов

Вопрос задан

Изменён 5 лет 1 месяц назад

Просмотрен 67 раз

В чем разница include() и require(), а также include_once() и require_once()? Не могу понять.

1

https://stackoverflow.com/questions/2418473/difference-between-require-include-and-require-once Функция include вызывает предупреждение, если подключаемый файл не найден, include_once не включает файл повторно, если он уже был включен в исполняемый код. Require вызывает фатальную ошибку, если файл не найден, require_once не подключает файл повторно.

На практике разница в том, что все жизненно важные файлы должны подключаться через require/require_once — отсутствие файла сразу даст возможность отдебажить и исправить ошибку.

Если на сервере включено подавление предупреждений http://php.net/manual/ru/function.error-reporting.php, а Вы подключили файл через include/include_once, то об проблеме отсутствия файла Вы узнаете только косвенно или вообще не узнаете.

Если Вы будете подключать один файл несколько раз через include или require, то будете получать фатальную ошибку вида:

Fatal error: Cannot redeclare get_raw_data_list() (previously declared in /var/www/codes/handlers/make_a_thread/get_raw_data_list.php:7) in /var/www/codes/handlers/make_a_thread/get_raw_data_list.php on line 19

include() и require() выполняют одну и ту же задачу — подключения нужного файла в текущий скрипт. Разница в поведении в случае ошибки подключения заданного файла. При ошибке подключения через include будет выдано предупреждение и скрипт будет выполняться дальше. А через require будет выдано критическую ошибку и скрипт прервет работу. Дописка в конце once означает что подключение файла будет один раз и если он уже был ранее подключен, тогда заново подключаться не будет

Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации

Почта

Необходима, но никому не показывается

Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки

c++ — Различие в #include «mylib.

h» и #include

Вопрос задан

Изменён 3 года 3 месяца назад

Просмотрен 277 раз

Почему при объявлении стандартных библиотек компилятор принимает запись #include <syslib>, а стоит подключить свою библиотеку, например, вида

#include <mylib>, так компилятор выдает ошибку No such file or directory?

Однако, при изменении строки #include <mylib> на #include "mylib.h" все он находит прекрасно.

Великие странности или лыжи просто не едут…

  • c++
  • include

1

Вот, отсюда (первый же ответ Google на «Включаемые файлы угловые скобки C»):

Директива #include заставляет компилятор прочитать и скомпилировать указанный исходный файл.

Для записи этой директивы используются следующие общие формы.

#include "имя_файла"
#include <имя_файла>

Имя исходного файла, подлежащего прочтению, должно быть заключено в двойные кавычки или угловые скобки. Например, оператор

#include <MyFuncs.h>

заставит компилятор прочитать и скомпилировать файл MyFuncs.h.

Если имя файла заключено в угловые скобки, то поиск файла будет осуществляться способом, определенным создателем компилятора. Часто это означает, что поиск выполняется в некотором специальном каталоге, выделенном для заголовочных файлов. Если же имя файла заключено в кавычки, поиск файла выполняется другим способом, зависящим от конкретной реализации. Во многих случаях это означает поиск текущего рабочего каталога. Если заданный файл не найден, поиск повторяется с использованием первого способа (как если бы имя файла было заключено в угловые скобки). Чтобы ознакомиться с подробностями, связанными с различной обработкой директивы

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

6

Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации

Почта

Необходима, но никому не показывается

Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки

Класс

.

В чем разница между включением и требованием в Ruby?

спросил

Изменено 3 месяца назад

Просмотрено 276 тысяч раз

Мой вопрос похож на «В чем разница между включением и расширением в Ruby?».

Какая разница между требует , а включает в Ruby? Если я просто хочу использовать методы из модуля в своем классе, должен ли я требовать его или включать его?

  • рубиновый
  • класс
  • модуль
  • включить
  • требуется

1

Какая разница между «включить» и «требовать» в Ruby?

Ответ:

Методы include и require делают очень разные вещи.

Метод require делает то, что включает делает в большинстве других программ языки: запустите другой файл. Это также отслеживает то, что вам нужно в прошлое и не потребует того же файла дважды. Чтобы запустить другой файл без эта дополнительная функциональность, вы можете использовать метод загрузки.

Метод include принимает все методы из другого модуля и включает их в текущий модуль. Это вещь на уровне языка, так как в отличие от файлового уровня, как с требовать. Метод включения — это основной способ «расширить» классы с помощью другие модули (обычно называемые микс-ин). Например, если ваш класс определяет метод «каждый», вы можете включить модуль миксина Enumerable и он может действовать как коллекция. Этот может сбивать с толку, поскольку глагол включения используется по-разному в других языки.

Исходный код

Итак, если вы хотите просто использовать модуль, а не расширять его или делать примеси, вам нужно использовать require .

Как ни странно, require в Ruby аналогичен include в C, а include в Ruby почти ничем не отличается от include в C.

11

Если вы используете модуль, это означает, что вы переносите все методы в свой класс. если вы расширить класс с модулем, это означает, что вы «вносите» методы модуля как методы класса . Если вы включаете класс с модулем, это означает, что вы «привносите» методы модуля как методы экземпляра .

EX:

 модуль А
   определенно сказать
     пишет "это модуль А"
   конец
 конец
 класс Б
   включить А
 конец
 класс С
   продлить А
 конец
 

Б.сэй => неопределенный метод «сказать» для B: Class

Б.нов.сказать => это модуль A

C.say => это модуль A

C.new.say => неопределенный метод «скажем» для C: Class

2

Из книги Metaprogramming Ruby,

Метод require() очень похож на load() , но предназначен для другая цель. Вы используете load() для выполнения кода, и вы используете require() для импорта библиотек.

2

  • Ruby require больше похоже на «include» в других языках (например, C). Он сообщает Ruby, что вы хотите ввести содержимое другого файла . Подобные механизмы на других языках:

    • с использованием директивы в C#.
    • импортировать в Java.
  • Ruby включает объектно-ориентированный механизм наследования, используемый для миксинов .

Здесь есть хорошее объяснение:

[] Простой ответ заключается в том, что require и include по существу не связаны.

«require» похож на C include, что может вызвать недоумение у новичков. (Одним заметным отличием является то, что местные жители внутри требуемого файла «испаряются» когда требование выполнено.)

Ruby include не имеет ничего общего с C include. Оператор include «подмешивает» модуль в класс. Это ограниченная форма множественного наследования . Включенный модуль буквально дарует «есть-а». отношение на вещь в том числе его.

Выделение добавлено.

1

Из Programming Ruby 1.9

Перед тем, как продолжить, мы сделаем несколько замечаний по оператору include. Во-первых, у него есть ничего общего с файлами. Программисты на C используют директиву препроцессора под названием #include для вставлять содержимое одного файла в другой во время компиляции. Оператор Ruby включает просто делает ссылку на модуль. Если этот модуль находится в отдельном файле, вы должны использовать require (или его менее часто используемый родственник load) для перетаскивания этого файла перед использованием include. Во-вторых, включение Ruby не просто копирует методы экземпляра модуля в класс. Вместо этого он делает ссылку из класса на включенный модуль. Если несколько классов включите этот модуль, все они будут указывать на одно и то же. Если изменить определение внутри модуля, даже во время работы вашей программы все классы, включающие этот модуль будет демонстрировать новое поведение.

Вы когда-нибудь пытались потребовать модуль? Каковы результаты? Просто попробуйте:

 MyModule = Module.new
require MyModule # посмотрим, что произойдет
 

Модули не требуются, только включены!

1

«Загрузить» — вставляет содержимое файла. (Разбирать файл каждый раз, когда файл вызывается)

«Требовать» — вставляет проанализированное содержимое файла. (Файл анализируется один раз и сохраняется в памяти)

«Включить» — включает модуль в класс и может использовать методы внутри модуля в качестве метода экземпляра класса

«Расширить» — включает модуль в класс и может использовать методы внутри модуля в качестве метода класса

Включить Когда вы включаете модуль в свой класс, как показано ниже, это как если бы вы взяли код, определенный в модуле, и вставили его в класс, где вы его «включаете». Это позволяет поведение «mixin». Он используется для СУШКИ вашего кода, чтобы избежать дублирования, например, если в модуле есть несколько классов, которым потребуется один и тот же код.

Загрузка Метод load почти аналогичен методу require, за исключением того, что он не отслеживает, была ли загружена эта библиотека. Таким образом, можно загружать библиотеку несколько раз, а также при использовании метода загрузки вы должны указать расширение «.rb» имени файла библиотеки.

Требуется Метод require позволяет загружать библиотеку и предотвращает ее повторную загрузку. Метод require вернет «false», если вы попытаетесь загрузить ту же библиотеку после первого раза. Метод require необходимо использовать только в том случае, если загружаемая библиотека определена в отдельном файле, что обычно и бывает.

Вы можете предпочесть это http://ionrails.com/2009/09/19/ruby_require-vs-load-vs-include-vs-extend/

Ниже приведены несколько основных различий между require и include:

Require:

  1. Require читает файл из файловой системы, анализирует его, сохраняет в памяти и запускает в заданном месте, что означает, что если вы даже измените что-либо во время работы скрипта, это изменение не отразится.
  2. Нам нужен файл по имени, а не по имени модуля.
  3. Обычно используется для библиотек и расширений.

Include:

  1. Когда вы включаете модуль в свой класс, он ведет себя так, как если бы вы взяли код, определенный в вашем модуле, и вставили его в свой класс.
  2. Мы включаем имя модуля, а не имя файла.
  3. Обычно используется для сушки кода и устранения дублирования кода.
 требуется (имя)
 

Он вернет bolean true/false

Имя, которое передается в качестве параметра для требования, ruby ​​попытается найти исходный файл с таким именем в вашем пути загрузки. Метод require вернет «false», если вы попытаетесь загрузить ту же библиотеку после первого раза. Метод require необходимо использовать только в том случае, если загружаемая библиотека определена в отдельном файле. Таким образом, он отслеживает, была ли эта библиотека уже загружена или нет.

 включить имя_модуля
 

Предположим, у вас есть методы, которые нужно иметь в двух разных классах. Тогда вам не нужно писать их в обоих классах. Вместо этого вы можете определить его в модуле. А затем включить этот модуль в другие классы. Он предоставляется Ruby только для обеспечения принципа DRY. Он используется для СУШКИ вашего кода, чтобы избежать дублирования

Например: когда вы используете require 'math' , вы должны написать Math::PI . Но когда вы используете включает «математику» , вы можете просто написать PI .

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Разница между Require и Include

В PHP существует два способа включения файлов: Require и Include. У обоих есть свои преимущества и недостатки, но какой из них выбрать? В этом сообщении блога мы рассмотрим разницу между Require и Include и поможем вам решить, что лучше всего подходит для вашего проекта.

Что такое Требовать?

Что такое включить?

Разница между требованием и включением

Заключение

Что требуется?

Require в PHP — это языковая конструкция, используемая для включения определенного файла во время выполнения программы. Это может быть полезно для включения внешних файлов, содержащих код или функции, необходимые для текущей программы. Require вызовет фатальную ошибку и остановит выполнение программы, если указанный файл не будет найден. С другой стороны, include выдаст только предупреждение и продолжит выполнение программы. Рекомендуется использовать требование, а не включение, так как это гарантирует, что необходимые файлы будут включены перед продолжением выполнения. Однако многократное использование require для одного и того же файла приведет к его включению только один раз, что предотвратит дублирование кода.

Что включает?

Включить в PHP позволяет разработчику добавлять внешние файлы в текущий исполняемый файл PHP. Это может быть полезно для включения HTML-файлов верхнего или нижнего колонтитула или для включения внешних функций и классов. Include также может помочь в организации и обслуживании кода, разделяя различные компоненты на отдельные файлы. У Include есть несколько вариантов, таких как include_once, который будет включать файл только один раз, даже если он вызывается несколько раз, и require, который вызовет ошибку, если указанный файл не будет найден. В целом, Include помогает сделать PHP-код более эффективным и организованным.

Разница между Require и Include

  • Когда дело доходит до включения внешних файлов в сценарий PHP, есть два основных варианта: Require и Include. Обе эти функции служат одной и той же цели, но между ними есть важное различие.
  • Require вызовет фатальную ошибку, если указанный файл не будет найден, что означает остановку выполнения скрипта. Включение, с другой стороны, выдаст только предупреждение, и сценарий продолжит работу.
  • В общем, Require следует использовать, когда включаемый файл имеет решающее значение для работы скрипта. Включить можно использовать для дополнительных компонентов. Важно иметь в виду, что Require также будет повторно включать указанный файл каждый раз, когда он вызывается, тогда как Include будет делать это только в том случае, если он еще не был включен.

Заключение

Требовать и включать — два важных слова в веб-разработке, но они имеют разные значения. Когда вам что-то требуется, это необходимо для правильной загрузки страницы. Если вы что-то включаете, это дополнение, которое пользователь может видеть или не видеть. Важно понимать разницу между этими двумя терминами, потому что их неправильное использование может вызвать проблемы на вашем сайте.