<MyRusakov.ru />

Создание движка на PHP и MySQL 2.0

Создание движка на PHP и MySQL 2.0

Видеокурс "Создание движка на PHP и MySQL 2.0" научит Вас создавать профессиональные движки для сайтов на PHP и MySQL с использованием ООП и паттерна MVC.

В курсе разобрана вся теория по структуре движка: как всё устроено, какие должны быть объекты, какая у них иерархия и как они взаимодействуют между собой.

В практической части будет создан движок с чистого листа. Будет создано ядро, все адаптеры, все вспомогательные классы, а также классы для работы с объектами базы данных. И чтобы курс был максимально полезным, будет создан движок для сайта MyRusakov.ru.

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Функция __autoload в PHP

Функция __autoload в PHP

Те, кто создаёт достаточно крупные сайты обычно использует ООП. И крайне желательно каждый класс хранить в отдельном файле, однако, из-за этого возникает необходимость подключать большое количество файлов, из-за чего сильно страдает инкапсуляция ООП. Ведь Вам для внедрения нового класса придётся его подключать в другие файлы, а в идеале хотелось бы старые файлы при добавлении новой функциональности не менять. Решить данную проблему поможет относительно новая функция в PHP - __autoload(), о которой мы сегодня и поговорим.

Если кратко, то функция __autoload() вызывается, когда мы пытаемся создать объект класса, которого ещё не существует (например, просто не подключён файл).

Теперь разберём пример. Допустим, у нас есть 2 класса: A и B. И пусть они находятся в файлах "a_class.php" и "b_class.php" соответственно. Если мы напишем в отдельном файле такой код, то у нас возникнет ошибка из-за неопределённых классов:

$a = new A();
$b = new B();

Можно подключить их с помощью require_once, но тогда мы возвращаемся к началу статьи. Чтобы этого не делать, используем функцию __autoload() в PHP:

function __autoload($class_name) {
  require_once $class_name."_class.php";
}
$a = new A();
$b = new B();

Теперь никаких ошибок не происходит и оба объекта будут успешно созданы.

То есть при отсутствии подключённого файла PHP передаёт в функцию __autoload() имя класса. И внутри этой функции уже подключается соответствующий файл. Если же вдруг и там ничего не подключится, тогда уже будет ошибка.

Вот такая полезная функция позволит Вам, с одной стороны, сократить код, с другой стороны, код будет более высокого качества. Но обратите внимание, что функция __autoload() появилась только в PHP 5. К счастью, большинство хостингов давно обладают этой версией PHP. Если вдруг у Вас не так, то напишите им в поддержку с просьбой обновиться, либо смените хостинг.

А если у Вас затрудения по ООП и его использованию при создании сайтов, то рекомендую Вам пройти мой подробный обучающий курс: PHP и MySQL с Нуля до Гуру.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (4):

RussianPro RussianPro 16.09.2013 15:00:00

Такой прикол опытные программисты используют уже очень давно, а Вы, Михаил, только сейчас о нём узнали!

Ответить

lev_100rus lev_100rus 16.09.2013 17:07:34

Михаил может давно уже о ней знает, но статью написал только сейчас. А вообще да, поздно, уже новая появилась функция set_autoload_register

Ответить

malina95 malina95 17.09.2013 09:41:10

spl_autoload_registerннужноииспользовать а не эту дурацкую функцию которая совершенноббезфункциональная.

Ответить

lev_100rus lev_100rus 17.09.2013 12:37:29

Я это и имел ввиду. Просто опечатался)

Ответить

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.