|
Веб-курсы Что это? Оглавление Основы Основы основ Практика Гостевая книга Простой сайт Структура сайта (MVC) Ядро (Light) Ядро Гостевая на SQL Статические страницы Модуль новостей Система регистрации Теория Дебаггинг Регулярные выражения Введение в ООП Паттерны проектирования Репозитарий BB-code Почтовый класс Пагинатор Всякие полезности Download Полезные утилиты Разное Видеокурсы Последние изменения Вопросы и замечания сюда Реклама Диеты для похудения Фреймворк Kohana. Обучение. Мануал на русском. |
Автолоад
Вот интересная ситуация. ООП многими поборниками позиционируется как вещь, призванная упорядочить код и сделать его более компактным. Однако что вышло. В процедурном подходе файл с нужным функционалом было достаточно подключить.
Декларация с уменьшением объема кода потерпела фиаско - строк больше ровно в два раза. ![]() Чтобы восстановить утерянные позиции, была изобретена функция __autoload(). Вернее не сама функция, а способность PHP вызывать эту функцию, если он не может найти нужный класс. Вот сделаем теперь так:
Если запустить этот код, мы получим ошибку интерпретатора "Class 'exampleClass' not found". И он прав - класс то мы не определяли. Но если присмотреться, то перед ошибкой можно разглядеть название класса. Из чего можно сделать вывод, что функция __autoload() сработала. Хотя мы её и не запускали. Причем в её аргумент было передано название класса, объект которого мы пытались получить. Вот можно воспользоваться этой возможностью и подгрузить файл с классом именно тогда, когда он понадобится. А именно при инициализации объекта:
Теперь просто нужно класс exampleClass поместить в одноименный файл exampleсlass.php, а функцию поместить туда, где к ней будет доступ из всех запускаемых скриптов. И теперь можно не писать двух строк, а просто инициализировать объект в нужном месте. Сласс подгрузится сам. Для пущей важности можно добавить проверку на наличие файла. Многие так и делают:
Многие идут еще дальше - делают реестр. Другими словами массив с именами классов. И проверяют наличие запускаемого в реестре. Тоже совершенно лишняя операция. Для того, чтобы знать, что где - достаточно документации и комментариев. Впрочем решать Вам, наше дело показать принцип. |