Какой наиболее эффективный метод загрузки виджетов в functions.php


Я видел, как разработчики WordPress использовали два разных метода для загрузки пользовательских виджетов из functions.php файл.

Первый:

include("functions/my-custom-widget.php");

Второй:

require_once(dirname(__FILE__) . "/functions/my-custom-widget.php");

Какой из этих методов более эффективен. Меня особенно интересует производительность, если вообще есть разница. Соответствует ли require_once лучшим "лучшим практикам"?

Я уверен, что есть много других способов сделать это. Если у кого-нибудь есть лучшая рекомендация, я с удовольствием послушал бы это.

Спасибо.

Author: derekshirk, 2012-06-05

2 answers

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

Пример:

$found = locate_template( 'functions/my-custom-widget.php', TRUE, TRUE );

Первый TRUE указывает WordPress не только на поиск файла, но и на загрузку на самом деле. Второй делает это вызовом require_once.

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

 5
Author: fuxia, 2012-06-05 12:31:09

require_once ( Документация по PHP)

Проверит, был ли файл уже включен, и если да, то не будет включать (требовать) его снова.

Эта проверка займет больше времени. Если вы знаете, что делаете (в том числе), то вам следует отказаться от части _once и сэкономить время.

ИЗМЕНИТЬ: вы не увидите разницы только с несколькими файлами. Но если вы не включаете много файлов, вы не испортите свое включение/требование ни с такой простой вещью, как тема WP, так что, ИМХО, нет смысла предотвращать несколько вызовов одного и того же файла.

О разнице между require() и include():

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

 2
Author: FelipeAls, 2012-06-05 09:37:24