# Автозагрузка классов

Вы уже знаете, что чтобы воспользоваться каким-нибудь классом, мы должны подключить его через `require`. Когда в проекте очень много классов, то получается много подключений, которые очень неудобно писать и трудно контролировать.

Для решения такой проблемы в PHP была добавлена автозагрузка классов. Автозагрузка позволяет PHP автоматически загружать файл с классом при попытке обращения к этому классу в коде. Однако, просто так классы загружаться не будут - их необходимо разместить по папкам сайта специальным образом, следуя какому-нибудь соглашению об именах файлов и папок классов. Можно пользоваться встроенным в PHP соглашением, либо придумать свое и пользоваться им.

Давайте для начала разберем стандартное соглашение PHP. Это соглашение заключается в то, что если у нас есть некоторый файл с классом, то путь по папкам сайта к этому файлу должен совпадать с пространством имен файла, а имя файла должно совпадать с именем хранящегося в нем класса. При этом имена папок и файла должны быть в нижнем регистре.

Посмотрим на примере. Пусть у нас есть следующий класс:

`<?php namespace Core\Admin; class PageController { } ?>`

По соглашению данный класс должен располагаться в папке `/core/admin/` в файле `pagecontroller.php`.

Давайте теперь в файле `index.php` используем наш класс, не подключая его через `require`, а используя автозагрузку. Для этого в начале файла, в котором вызываются классы, следует вызвать функцию `spl_autoload_register`. Сделаем это:

`<?php spl_autoload_register(); // включаем автозагрузку $obj = new Core\Admin\PageController; // спокойно создаем объект ?>`

В файле `index.php` включите автоматическую загрузку классов. Следуя соглашению об именах папок и файлов сделайте класс `Core\User`, класс `Core\Admin\Controller` и класс `Project\User\Data`. В файле `index.php` создайте объекты этих классов.

← →
↑