Как php и собственные платформы работают в фоне?

я являюсь новым на веб-программировании.i, хорошо на c# платформе .NET на рабочем столе. я пытался понять php и php платформы, но я запутываюсь немного. я понимаю, что php файл может импортировать классы, который находится в файле в другой php файл с функцией require_once. но платформы не импортируют его собственные классы с функцией require_once. я думаю, что они делают что-то другое, что я не понимаю. Кто-то может объяснить мне?

1
задан Bill the Lizard 6 December 2010 в 20:48
поделиться

1 ответ

Большинство фреймворков используют технику, называемую «Автозагрузка», для автоматического разрешения и включения необходимых зависимостей.

"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 класс.

2
ответ дан 3 September 2019 в 01:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: