В WordPress одна из распространенных проблемных ситуаций — это правильный способ включения внешних файлов.

PHP предлагает четыре (!) Способа сделать это, а WordPress даже предлагает свой вариант.

В этой статье мы рассмотрим эти способы, а также рекомендации по использованию каждого из них.

include()

Согласно руководству по PHP: include() будет включать и оценивать указанный файл. Если файл не найден, будет выдано предупреждение PHP.

Проще говоря, это означает, что PHP будет искать файл, который вы пытаетесь включить. Если он найден, он будет добавлен в ваш скрипт в том месте, где вы его объявили.

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

С другой стороны, если вы хотите добавить набор функций или внешний файл в середине существующей функции, вы можете включить его точно в то место, где он вам нужен.

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

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

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

Предположим, что вы работаете над функцией и на полпути к выполнению функции вы собираетесь включить отдельный файл. Этот отдельный файл будет иметь доступ к переменным, определенным ранее в функции, в которую он включен.

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

include_once()

Согласно руководству по PHP: include_once() будет выполнять то же поведение, что и include(), но не будет включать файл снова, если он уже был включен.

Функция include_once() похожа на include(), но между ними есть некоторые ключевые отличия.

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

Так в чем преимущество этого? Помимо гарантии того, что скрипт находится только в одном месте, это также гарантирует, что переменные и функции не обязательно будут переопределены. Напомним, что при использовании include() скрипты имеют доступ к функциям и переменным, которые определены перед ними.

Если вы решите определить новый набор переменных или функций в файле, то вы рискуете переопределить функции и переменные файла, подключенного через include(), которые потенциально могут вызвать серьезные проблемы с выполнением вашего код.

require()

Согласно руководству по PHP: require() работает так же, как include(), но выдает фатальную ошибку PHP, если файл не найден.

Файл, подключенный с помощью require() будет выполнять то же действие, что и include(), в части импорта внешнего скрипта в контекст того, над чем вы работаете, но если ему не удается найти файл, он выдаст фатальную ошибка и полностью остановит выполнение.

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

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

Не существует жестких правил, определяющих, когда использовать require(), а когда include(). Скорее всего тут нужно просто опираться на здравый смысл.

require_once()

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

Это, вероятно, легче всего понять, поскольку мы рассмотрели последние три функции относительно подробно. Проще говоря, require_once() выполняет те же функции, что и require(), но не будет пытаться снова включить файл, если он уже загружен в ваш скрипт.

get_template_part()

WordPress предлагает функцию get_template_part(), которая является частью собственного API и используется специально для повторного использования разделов или шаблонов кода в вашей теме.

get_template_part( 'loop', 'standard' );

Функция принимает два аргумента:

  • Первый аргумент — это ярлык для шаблона. В приведенном примере это будет «loop».
  • Второй аргумент — это имя шаблона. В приведенном выше примере это будет «standard».

С версии WordPress 5.5.0 принимает третий параметр — переменную, которую можно использовать, чтобы пробрасывать данные в шаблон, например:

get_template_part( 'loop', 'standard', [ 'bgcolor' => 'light-gray', 'areas' => [ 1, 2 ] ] );

Теперь в этом файле можно получить указанные параметры через переменную $args.

Когда-что использовать

При использовании этих функций я советую, в первую очередь, опираться на здравый смысл, а во вторую но чьи-то рекомендации, но если вы все же решите воспользоваться советами, то вот принципы, которые я использую чаще всего:

  • При подключении файлов в functions.php чаще всего я использую require_once()
  • При подключении фронтенд-шаблонов в файлах темы использую get_template_part()
  • При разработке плагинов я почти всегда использую include_once() и обычно использую его один раз в функции

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 5 / 5. Количество оценок: 1

Оценок пока нет. Поставьте оценку первым.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *