Многие фреймворки имеют автозагрузчики, один из которых не является CodeIgniter , и вы должны указать, какие классы вы хотите загружать все время и какие классы вы хотите загружать внутри ваших контроллеров / моделей / представлений /библиотеки.
Это не совсем необходимо, но это хорошо, потому что, как правило, обеспечивает файловую структуру, и вам также не нужно беспокоиться о том, чтобы не забыть включить файлы в начало ваших скриптов.
[Редактировать]
По-видимому, требуется пояснение по моему утверждению CodeIgniter
.Да, есть место auto_load
, которое позволяет вам указать библиотеки / модули, которые вы хотите автоматически загружать в начале каждого скрипта, и да, есть библиотека загрузчиков, но они не совпадают с реальными автозагрузчиками.
Вы должны указать, какие из них вы хотите в начале, он не знает, что вы хотите загрузить модель Pizza_Store, пока вы не используете пользовательский
$this->load->model->('foo');
, который эквивалентен
include 'application/models/foo.php';
$this->Foo = new foo();
Но на самом деле это не то же самое, что просто вызвать $this->foo = new Models_Foo();
и CodeIgniter, зная, что вы подразумеваете под ним, что и происходит, когда используется автозагрузчик.
[Редактироватьpart deux]
Нигде в коде не написано __autoload
, spl_autoload
или spl_autoload_register
.Это потому, что он поддерживает совместимость с PHP 4.Это просто способ построения фреймворка, есть ложная автозагрузка, как я уже говорил выше, но она делает это для каждого «автозагрузочного» класса:
foreach($autoloaded_class as $type=>$class){
if(is_application_class($class)){
include "application/{$type}/{$class}.php";
}
elseif(is_core($class)){
include "core/{$type}/{$class}.php";
}
}
$array['Foo'] = new Foo();
$controller($array);
, который по сути вызывает:
включает 'foo.php';
вверху каждого файла, независимо от того, нужен он вам или нет.