Большинство фреймворков использует технику, называемую «Автозагрузка», для автоматического разрешения и включения необходимых зависимостей.
«Автозагрузчик» - это просто функция, которая вызывается PHP при обращении к неизвестному классу. Этот «автозагрузчик» может либо процедурно создать класс, либо просто include
из внешнего файла на основе имени файла.
Текущий (PHP 5.1.2 и выше) правильный способ сделать это - использовать spl_autoload_register()
. Вот пример автозагрузчика:
function autoload_example($className) {
$normalizedName = strtolower($className);
if(file_exists('includes/' . $normalizedName . '.inc')) {
require_once('includes/' . $normalizedName . '.inc');
} elseif(file_exists('includes/' . $normalizedName . '.inc')) {
require_once('includes/' . $normalizedName . '.php');
} else {
die('Class ' . $className . ' not found');
}
}
spl_autoload_register('autoload_example');
$myAwesomeObject = new Awesome();
В приведенном выше примере PHP запустит «Автозагрузчик» autoload_example
, когда ударит ссылку на класс Awesome
.
«Автозагрузчик» сначала попытается найти файл include/awesome.inc
. Если он может найти его, он включит его.
Если нет, он будет искать файл с именем include/awesome.php
. Если он может найти его, он включит его.
Если нет, то die()
сообщит, что не может найти мой Awesome
класс.