Является ли более эффективным использование PHP include_once
или require_once
вместо использования C-like include
с защитой заголовка?
То есть,
include_once 'init.php';
против
include 'init.php'; //contents of init.php if (!defined('MY_INIT_PHP')) { define('MY_INIT_PHP', true); ... }
«require_once» и «include_once», как правило, немного медленнее, чем «требуют» и «включать», потому что они выполняют проверку, прежде чем файл уже загружен.
Но разница имеет значение только в действительно сложных приложениях, где вы должны делать автозагрузку в любом случае, и вам не понадобится require_once / include_once, если ваш автозагрузчик хорошо закодирован.
В большинстве простых приложений лучше использовать require_once / include_once для удобства.
Подход защиты заголовка – это просто грязный код, которого следует избегать. Представьте себе, если вы забыли эту проверку в одном из многих файлов. Отладка, которая может стать кошмаром.
Просто используйте автозагрузку, если ваше приложение подходит для нее. Это быстро и удобно и чисто.
Я ожидал бы, что include_once будет быстрее, чем использование защиты заголовка внутри включенного файла, так как вам все равно нужно открыть и загрузить файл в последнем.
Вы можете попробовать его 10 000 раз с помощью таймера, но я думаю, что определение MY_INIT_PHP бесконечно быстрее.
Честно говоря, это, скорее всего, такая маленькая разница, что нет практической необходимости заботиться, если вы не работаете на таких сайтах, как Facebook.
Я всегда использую REQUIRE_ONCE, если содержимое скрипта уникально.