Як у проекті зробити автоматичне підвантаження класів за допомогою автозавантажувача

Як правило, при створенні сайту в проект включають чимало класів, що визначають внутрішню структуру майбутніх екземплярів. Кожен клас, як правило, розташовується в окремому файлі. Це твердження стосується як абстрактних, так і звичайних класів, однаково воно справедливе і для інтерфейсів. Ті, хто вивчає основи сайтобудування, очевидно знають, що підключення файлів з класами в PHP здійснюється за допомогою спеціальних операторів, які приймають як аргумент шлях до файлу або інакше ім'я файлу. При цьому шлях може бути як відносним, так і абсолютним. Під традиційним простим підключенням розумітимемо наступне:

Однак таке підключення має цілу низку недоліків і тим, кому цікаво сайтобудування для початківців, цікаво буде дізнатися, що ці недоліки легко обійти за допомогою автозавантажувача.

Недоліки традиційного підключення

Серед найбільш очевидних недоліків традиційного підключення файлів з класами можна виділити можливе їхнє велике число і труднощі в подальшому управлінні підключенням. Якщо таких файлів виявиться тисячі, то у вас обов'язково виникнуть труднощі, наприклад, з пошуком необхідного файлу або із зазначенням точного імені файлу з класом, а це означає і з керуванням підключеннями.

Основи сайтобудування: збираємо файли з класами в купу

Тим, кого цікавить сайтобудування для початківців, може бути відомо, що вирішити проблеми з підключенням файлів, які містять класи, можна зібрати такі файли в одному місці — в одній директорії. При цьому, якщо ви робите це не на хостингу, а на локальному хості, то розмістіть їх у кореневій директорії вашого сайту в татку під назвою, наприклад, lib. Якщо ж ви неПереналаштовувати свій сервер apache і кореневою директорією ваших документів залишається htdocs, то розташовуйте цю татку саме в цій директорії. Інакше розташуйте її в тій директорії, яка перевизначає основну директорію документів сервера apache. Саме в lib створюватимемо всі наші файли з класами.

класів

Скористаємося засобами PHP

Друге, що необхідно зробити, так це скористатися засобом, який надає сама мова PHP. Цей засіб називається автозавантажувачем класів і має такий вигляд:

Ми опустимо поки що складні моменти, пов'язані з реєстрацією безлічі таких автозавантажувачів — оскільки ця тема для тих, хто вивчає основи сайтобудування, може здатися складною — і поговоримо про одне, яке дозволить у проекті підвантажувати класи автоматично там, де це буде необхідно. Цей автозавантажувач доведеться ще перевизначити і помістити його в окремий файл, який у проекті буде виконувати конфігураційну роль при підключенні класів. При цьому слід додати, що цей автозавантажувач впорається і з тими класами, які виявляться з якоїсь причини не в папці lib. Сам конфігураційний файл розташуємо все в тій же добре знайомій папочці lib.

класів

Перевизначення автозавантажувача

У функцію нашого автозавантажувача передамо параметр, яким у кожному випадку виявиться якесь ім'я класу. У самій функції знадобиться визначити масив, в індексах якого пропишемо імена наших класів, а значеннях даного масиву вкажемо шляху до файлів цих класів. При цьому в імені файлу будемо використовувати глобальну змінну $_SERVER[] з літералом DOCUMENT_ROOT. Так ми зможемо отримати точний шлях до кореневої директорії нашого сайту. Через конкатенацію нам потрібно буде лише доповнити шлях до файлу його точнимзначенням. Так, у масиві автозавантажувача необхідно прописати кожен клас і файл, де він розташований. А наступним кроком стане перевірка на існування в масиві переданого в функцію як параметр класу. Якщо він вказаний у конфігураційному файлі і існує, то автозавантажувач зможе підвантажити його через оператор підключення. В іншому випадку ми перервемо виконання функції оператором return. У нас вийде щось схоже на це:

класів

Тим, хто вивчає основи сайтобудування, цікаво буде дізнатися, що для того, щоб скористатися можливостями автозавантажувача, нам потрібно буде в кожному файлі, де ми хочемо його використовувати, підключити створений конфігураційний файл.

Якщо клас ще не був завантажений, автозавантажувач підвантажить його і вивчає сайтобудування для початківців, спокійно зможе створювати екземпляри цього класу.