я являюсь новым на веб-программировании.i, хорошо на c# платформе .NET на рабочем столе. я пытался понять php и php платформы, но я запутываюсь немного. я понимаю, что php файл может импортировать классы, который находится в файле в другой php файл с функцией require_once. но платформы не импортируют его собственные классы с функцией require_once. я думаю, что они делают что-то другое, что я не понимаю. Кто-то может объяснить мне?
Большинство фреймворков используют технику, называемую «Автозагрузка», для автоматического разрешения и включения необходимых зависимостей.
"Autoloader" - это просто функция, которая вызывается PHP, когда на неизвестный класс ссылаются. Этот "Автозагрузчик" может либо процедурно создать класс, либо просто включить
его из внешнего файла на основе имени файла.
Текущий (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 запустит "Autoloader" autoload_example
, когда он попадет в ссылку на класс Awesome
.
«Автозагрузчик» сначала попытается найти файл include/awesome.inc
. Если он сможет его найти, он включит его.
Если нет, он будет искать файл с именем include/awesome.php
. Если он сможет его найти, он включит его.
Если нет, он умрет ()
утверждая, что он не смог найти мой Awesome
класс.