{{TOC}} == Основы == Автозагрузка позволяет вам использовать классы без явного подключения их файлов с помощью %%require()%% или %%include()%%. Таким образом, только те классы, которые действительно используются будут загружены и вы можете начать использовать любой класс не задумываясь о том, был ли он подключен или нет. По умолчанию, в файле **application/start.php** уже определена автозагрузка для папок %%(t)application/models%% и %%(t)application/libraries%%. Загрузчик использует имя класса для определения пути к его файлу. Все имена файлов приводятся к нижнему регистру (!!(tl_note)если файл не найден в нижнем регистре, то используется изначальный регистр символов - //прим. пер.//!!). Например, класс %%User%% внутри %%(t)application/models%% должен быть определён в файле %%(t)user.php%%. Вы также можете импользовать вложенные папки если классы содержатся в //((phpdoc:language.namespaces пространствах имён))//. Например, класс %%Entities\User%% может содержаться в файле %%(t)application/models/entities/user.php%%. == Регистрация папок == Как уже объяснялось выше, папки %%(t)models%% и %%(t)libraries%% по умолчанию уже зарегистрированы в автозагрузчике - однако вы можете зарегистрировать любые другие пути для использования этого же класса. %% Autoloader::directories(array( path('app').'entities', path('app').'repositories', )); %% == Связи класс -> файл == Иногда вам может понадобиться указать явное расположение файла для отдельного класса. Это самый быстрый способ загрузки. %% Autoloader::map(array( 'User' => path('app').'models/user.php', 'Contact' => path('app').'models/contact.php', )); %% == Пространства имён == Многие сторонние библиотеки используют стандарт //PSR-0// для размещения файлов классов. //PSR-0// указывает, что имя файла должно совпадать с именем класса, а пространства имён создают иерархию папок. Если вы используете такую библиотеку вы можете просто зарегистрировать её корневую папку в автозагрузчике: %% Autoloader::namespaces(array( 'Doctrine' => path('libraries').'Doctrine', )); %% .(tl_note) Код выше делает доступным класс %%Doctrine\Subnamespace\Class%% в файле %%(t)application/libraries/Doctrine/Subnamespace/Class.php%% или в его нижнерегистровой версии - //прим. пер.// До того, как в PHP 5.3 появились пространства имён многие проекты использовали **символ подчёркивания (%%(t)_%%)** для создания иерархичности. Если вы используете одну из таких старых библиотек вы по прежнему можете использовать автозагрузчик Laravel. Например, во //SwiftMailer// все классы начинаются с %%(t)Swift_%%, поэтому мы зарегистрируем %%(t)Swift%% в автозагрузчике таким образом: %% Autoloader::underscored(array( 'Swift' => path('libraries').'SwiftMailer', )); %% .(tl_note) Теперь все классы, начинающиеся со %%(t)Swift_%% будут искаться в папке %%(t)application/libraries/SwiftMailer%% - например, %%Swift_My_Class%% должен быть в файле %%(t)SwiftMailer/My/Class.php%% - //прим. пер.//