Автор(ы): Михаил Русаков
Видеокурс "Создание движка на PHP и MySQL 2.0" научит Вас создавать профессиональные движки для сайтов на PHP и MySQL с использованием ООП и паттерна MVC. В курсе разобрана вся теория по структуре движка: как всё устроено, какие должны быть объекты, какая у них иерархия и как они взаимодействуют между собой. В практической части будет создан движок с чистого листа. Будет создано ядро, все адаптеры, все вспомогательные классы, а также классы для работы с объектами базы данных. И чтобы курс был максимально полезным, будет создан движок для сайта MyRusakov.ru. Аналогично Вы сможете создать движок для абсолютно любого сайта.
Первая часть данного курса теоретическая. Она бесконечно важна, поскольку прежде чем создавать, нужно чётко представлять, что будет в итоге создаваться. В этом разделе Вы всё увидите. Разберём подробнее каждый урок из этого раздела.
Содержание:
Здесь Вы узнаете, как наиболее эффективно проходить данный курс.
Важнейший урок, из которого Вы узнаете общую структуру движка, который мы будем создавать в курсе.
В данном уроке мы с Вами подробно разберём ядро и классы, которые будут созданы в практической части курса. Из этого видео Вы узнаете, какой класс для чего нужен и за что отвечает.
Из этого урока Вы узнаете, для чего нужны адаптеры и где они используются. А также какие адаптеры будем создавать уже мы в курсе.
Очень важный урок, который расскажет о новом принципе работы с базой данных. Речь здесь идёт не о классе для отправки запросов, а о гораздо большем и более сложном, но крайне важном классе. Это одна из тех, как я считаю, гениальных мыслей, которую я взял из одной англоязычной книги.
Урок, в котором будет разобран механизм проверки данных перед их отправкой в базу данных. Все нюансы Вы узнаете уже из этого урока.
Здесь Вы узнаете о механизме генерации страниц по запросу пользователя с использованием различных контроллеров. Что это за контроллеры, как они выглядят – всё это Вы узнаете из этого видео.
Одна из ключевых частей моего подхода к созданию движка – это модульность. То есть каждый некий самостоятельный блок – это отдельная самодостаточная единица, имеющие свои свойства и TPL-файл для представления. Об этом подробно Вы узнаете из этого последнего урока теоретической части.
Особенностью практической части является создание движка для моего сайта - MyRusakov.ru. На входе у нас будет готовая вёрстка для сайта, а на выходе данной части курса мы должны получить уже полноценный сайт. Теперь перейдём к разделам данной части.
В данном разделе Вы увидите процесс создания ядра. Особенностью ядра является то, что создаётся оно лишь единожды, а затем Вы сможете его копировать от сайта к сайту, никак не изменяя. Кода здесь будет очень много, но его необходимо один раз создать. Впрочем, Вы можете его не создавать, а просто внимательно слушать, а весь исходный код я всё равно предоставлю.
Содержание:
Здесь мы создадим все таблицы, которые нам будут нужны для создания сайта. Это не относится напрямую к ядру, но это первое, что нужно делать.
Здесь Вы узнаете, какая должна быть структура файлов и папок, какие важнейшие файлы нужно создать, чтобы максимально обезопасить свой сайт.
В этом видео мы с Вами создадим файл настроек нашего сайта. Здесь также есть несколько рекомендаций, о которых знают немногие, но их крайне желательно соблюдать. Это так же касается безопасности и грамотности самого кода. Обо всём об этом я здесь рассказываю.
Здесь мы обсудим безопасность при выполнении запросов, напишем соответствующий код. В конце урока, у нас будет готовый класс по работе с запросами к базе данных.
Данный класс отвечает за работу с SELECT-запросами. Эту идею я взял из Zend Framework, и она идеально подошла к моему подходу создания движка.
Под объектами здесь подразумевается запись из определённой таблицы, то есть для каждой таблицы свой класс. Но в этом уроке разбирается особый принцип создания этих классов. Он резко отличается от того, что я делал ранее. И именно эту идею я взял из той англоязычной книги. Всё это Вы узнаете из этого урока.
В данном видео будет создан класс для работы с POST и GET запросами. Вы узнаете важные моменты по безопасности этих запросов, которые будут учтены при разработке этого класса.
Важный урок по созданию класса для работы с URL-адресами. Из него Вы узнаете, что должен делать данный класс. Безусловно, всё это мы реализуем в этом видео.
Данный класс является абстрактным и общим для всех классов, отвечающих уже за проверку определённого типа данных. Важность этого класса трудно переоценить, и его создание Вы увидите в этом уроке.
При некорректности входящих данных будет выбрасываться исключение, и этот класс исключения мы сделаем в этом видео.
В этом видео Вы увидите, как будет реализована часть по выводу данных на страницу в браузере пользователя.
Маршрутизатор - это механизм, который будет анализировать запрос пользователя и вызывать соответствующий объект для генерации определённой страницы. Такой механизм и будет создан в данном видео.
Контроллеров, вообще говоря, будет много. Но в данном видео мы создадим абстрактный класс – родительский для всех остальных. Как обычно, всё с детальным разбором: что, где и зачем нужно.
В данном видеоуроке Вы увидите процесс создания абстрактного класса для модулей сайта. Если не понять, как он работает, то Вы не сможете использовать ядро для других сайтов. Поэтому данный урок очень и очень важный.
Этот класс отвечает за обработку данных, пришедших из форм. Если Вы уже знаете PHP, то должны были обратить внимание, что формы обрабатываются однотипно. Я максимально возможно выделил всю общую часть и вытащил в этот класс. Таким образом, Вы увидите создание того, что сэкономит в будущем огромное количество времени по обработке форм. А про уменьшение количества кода, переносимость и повышенную защиту от случайных ошибок я вообще молчу.
В этом видео Вы увидите процесс создания класса для работы с системными сообщениями сайта, которую имеют место быть практически на каждом сайте.
Важнейший урок, ведь очень часто письма попадают в спам или вообще не доходят, либо приходят, но с неправильной кодировкой. Все эти проблемы можно свести к минимуму, если написать правильный код отправки e-mail. И этот код будет написан прямо на Ваших глазах, разумеется, с подробными комментариями.
В этом разделе Вы увидите процесс создания адаптеров, служащих посредниками между ядром и требуемым интерфейсом конечного сайта.
Содержание:
В этом видео будет создан адаптер для класса, отвечающего за работу с базой данных.
В этом видео мы разберём создание адаптера для класса, отвечающего за работу с SELECT-запросами.
Здесь будет показано расширение абстрактного класса AbstractObjectDB функционалом, который нам потребуется для MyRusakov.ru.
Данный урок содержит создания класса-адаптера для отправки e-mail.
В этом уроке мы напишем адаптер для работы с модулями именно для сайта MyRusakov.ru
В данном разделе будут создано множество классов для проверки самых различных типов данных. Ведь крайне важно перед отправкой данных в базу – тщательно проверить, что именно отправляется.
Содержание:
В данном уроке будет создан класс, отвечающий за проверку хэша.
Важнейший валидатор, который необходим практически для каждого сайта, где есть база данных.
В данном уроке Вы увидите, как проверяется дата на корректность ввода. Здесь есть определённые нюансы, о которых Вы и узнаете.
В этом видео мы создадим валидатор для проверки e-mail адресов, вводимых пользователями.
Тоже важнейший класс, который так же необходим практически на каждом сайте с базой данных.
Здесь будет создан класс, отвечающий за проверку имён файлов с изображениями.
Из этого видео Вы узнаете, как проверять на корректность IP-адреса.
В данном уроке будет реализован механизм проверки логина.
Урок по проверке корректности передаваемого мета-тега description.
Из данного урока Вы увидите проверку ключевых слов, которые подставляются в мета-тег keywords.
Здесь Вы увидите, как правильно проверять на корректность имена пользователей.
В этом уроке будет создан валидатор для проверки пароля. В том числе, будет учитываться и его сложность.
В этом видео есть много нюансов по проверке описаний тех же разделов и категорий, ведь это целый кусок текста, причём практически произвольного, поэтому очень важно не забывать о безопасности. О том, как добиться максимальной безопасности, Вы узнаете из этого видео.
Текст статьи и текст комментария – разные вещи. Нельзя позволять пользователям отправлять большие объёмы данных, иначе они начнут этим умышленно злоупотреблять. Поэтому создаётся отдельный валидатор именно для небольшого объёма текста.
Различные заголовки тех же статей так же нуждаются в проверке, и в этом видео будет создан валидатор для их проверки.
Данный урок посвящён проверке URI-адресов.
В этом видео Вы увидите создание валидатора для проверки на корректность URL-адресов.
В данном разделе Вы увидите, как создаются классы для самых различных объектов из базы данных.
В этом видео будет создан класс для объекта «Статья».
Здесь Вы увидите создание класса для разделов.
В этом уроке Вы увидите создание класса для удобной работы с категориями сайта.
Отдельный объект для работы с комментариями будет создан в этом видеоуроке.
На сайте MyRusakov.ru есть блоки, где выводятся различные курсы. Для них будет так же создан отдельный объект.
Каждый пункт меню – это отдельный объект, который, безусловно, нуждается в своих свойствах и методах. Поэтому в данном видео будет создан класс для меню.
Здесь будет несколько классов, каждый из которых будет отвечать за свой тип: класс для самого опроса, класс для варианта ответа и класс для голоса.
На сайте MyRusakov.ru есть блок с умными цитатами, которые хранятся в базе данных, и для них так же необходим отдельный класс, который будет нами создан в этом видео.
Достаточно сложный класс, но все эти моменты я подробно разберу в этом уроке.
В данном разделе создаются вспомогательные классы, которые нам необходимы для сайта MyRusakov.ru. Впрочем, эти классы, скорее всего, потребуются и для других сайтов тоже.
Содержание:
Здесь есть много нюансов по выводу читабельной капчи, но в то же время максимально затруднённой для роботов. Подобную капчу мы с Вами здесь и нарисуем, разумеется, оформив её в виде отдельного класса.
Бесконечно полезный класс по проверке форм на JavaScript. Фактически, все необходимые проверки подключаются к форме непосредственно ещё в PHP. А в JavaScript мы напишем небольшую библиотеку, которая реализует проверку форм. Таким образом, Вам уже не надо будет создавать каждый раз отдельную функцию для проверки очередной формы. Достаточно будет задать ряд параметров, согласно которым будет осуществляться проверка, а всё остальное сделает код, который в этом уроке мы и напишем.
В этом разделе Вы увидите создание самых различных модулей для сайта MyRusakov.ru. Будут разобраны все классы со всеми свойствами и методами, а также TPL-файлами, отвечающими за каждый модуль. Итак, вот какие уроки Вас ждут:
Содержание:
Достаточно универсальных для самых разных сайтов модуль. И его создание Вы увидите в этом уроке.
В этом видео Вы увидите создание модуля для верхнего меню.
Поскольку меню на сайте двухуровневое, то в этом уроке Вы узнаете, как выводить меню, в том числе и многоуровневые. Безусловно, необходима рекурсия, а как это всё объединить вместе с TPL-файлами – это Вы узнаете из этого урока.
В этом видео Вы увидите, как делается модуль для конкретной части страницы. Это совершенно универсальный модуль, и такие модули надо уметь создавать в обязательном порядке.
Этот модуль содержит цикл по выводу вариантов ответа для опроса. Как вмещается цикл в TPL-файл, Вы узнаете из этого видеоурока.
На моём несколько блоков, относящихся к курсам. Разумеется, создавать отдельные модули для каждого однотипного блока – неразумно. Однако, кое-какие принципиальные отличия у них есть (например, у одного блока есть форма подписки, у другого нет). Как обрабатывается это различие, Вы узнаете из этого видео.
В этом уроке Вы увидите создание модуля для вывода цитат.
Опять же, достаточно универсальный модуль, ведь модуль, отвечающий за вывод нескольких статей, используется на многих сайтах.
Здесь мы создадим модуль, отвечающий за вывод центрального содержимого на странице с категорией.
Ещё один универсальный модуль, который пригодится на многих сайтах, ведь странно будет выводить все 1000 записей на одну страницу. Поэтому требуется создание блока с навигацией.
В этом уроке будет создан модуль для вывода пунктов меню в панели у зарегистрированных пользователей.
Здесь будет разработан модуль, в котором выводятся результаты голосования на сайте.
Тоже очень популярный модуль, который мы с Вами сделаем в этом видеоуроке.
В этом видео Вы увидите создание универсального модуля, отвечающего за вывод HTML-форм на сайте.
Последний модуль, который мы создадим для сайта MyRusakov.ru, и он посвящён небольшим блокам, показывающим часть статьи, которая удовлетворяет запросу в поиске. Причём будет выводиться та часть, где максимальная частота совпадений с поисковым запросом.
В предыдущих разделах мы уже создали все необходимые элементы для сайта. И в этом разделе мы уже будем собирать все эти кирпичики воедино, выводя страницы сайта. Также Вы увидите обработку форм на сайте: регистрации, авторизации, опроса – и всё это с использованием наших классов. Именно в этот момент будет уже ясна вся красота того, что было нами создано.
Содержание:
В данном видео мы соберём множество блоков и выведем их на страницу, а также сделаем центральную часть, так же состоящую из различных модулей.
Здесь будет сделан вывод страницы с разделом.
В данном уроке так же будут объединены различные модули из предыдущего раздела. В итоге, будет получена страница с категорией.
После этого урока мы с Вами выведем все страницы со статьями. Тут важность движка (любого) отчётливо видна, ведь мы с Вами выведем всего одну ключевую страницу на основе наших модулей, при этом на сайте появятся целая армия страниц, каждая из которых содержит свою статью.
Сложность данного урока в том, что комментарии древовидные. Но, посмотрев данный урок, для Вас не составит труда повторить достаточно сложный материал, поскольку я всё тщательно разжевал в данном видео.
Здесь будет выведена очередная ключевая страница с результатом голосований. Опять же, ключевая страница одна, а число этих страниц на сайте равно числу опросов.
Здесь будет создана ещё одна страница, на которой будет находиться форма для регистрации пользователей. Безусловно, там будет капча, которую мы с Вами выведем на страницу.
Ключевой урок, который покажет Вам, как обрабатывать формы на сайтах.
Ещё один урок, который так же связан с обработкой формы. Но очень важно ещё знать, как делать авторизацию в сложной системе иерархии объектов. Об этом Вы узнаете из этого урока.
Очень полезный урок, в котором мы с Вами реализуем смену аватарок у пользователей, тем самым, Вы поймёте как реализован механизм работы с файлами в движке, а также реализуем возможность изменения имени и пароля пользователя.
Данный урок покажет механизм восстановления пароля с отправкой секретной ссылки на e-mail и последующей сменой пароля.
Ещё один урок, показывающий механизм восстановления логина по e-mail.
чень важный урок, который не только научит Вас делать поиск по базе данных, но ещё и сортировать результаты по релевантности. Достаточно сложный алгоритм, который Вы увидите в этом видео.
Важные напутствия по поводу того, как правильно применять знания из курса.
БЕСПЛАТНЫЕ БОНУСЫ
Очень полезный Бонус для тех, кто планирует создавать различные сервисы в Интернете. На большинстве из них есть свой API, и как он создаётся, Вы узнаете из этого Бонуса. Причём, даже если у Вас не сервис, то Вам всё равно может потребоваться API для, например, обработки запросов, отправленных через Ajax, как это сделано на MyRusakov.ru. Поэтому уметь создавать API надо обязательно, и этому Вы научитесь в данном Бонусе.
Содержание:
Прежде чем создавать API на сайте, мы с Вами разберём, что это такое, для чего нужно и как это работает.
В этом уроке мы перейдём к практике создания API на сайте MyRusakov.ru.
В данном уроке мы разберём, как работать с API и как правильно писать запросы к серверу.
Очень полезный Бонус, в котором мы создадим древовидные комментарии на сайте MyRusakov.ru. Причём добавление, редактирование и удаление комментариев происходит без перезагрузки страницы, а пользователь, на чей комментарий был дан ответ, будет получать e-mail уведомление об этом. Реализацию всего этого Вы увидите в этом Бонусе.
Содержание:
Поскольку комментарии будут добавляться без перезагрузки страницы, мы с Вами будем отправлять через Ajax запросы на сервер. И в этом видео мы добавим методы обработки этих запросов.
В этом уроке мы займёмся правами доступа к комментариям, чтобы каждый пользователь имел доступ исключительно к своим комментариям, а не ко всем. И в то же время, чтобы добавлять могли комментарии только зарегистрированные пользователи. Как всё это делается, Вы узнаете из этого урока.
В этом видео мы добавим ссылки «Редактировать» и «Удалить», причём только у тех комментариев, к которым имеет доступ пользователь.
Здесь мы займёмся работой с jQuery и Ajax: с целью вывода формы при клике по ссылкам «Добавить комментарий» и «Ответить», а также динамический вывод на странице добавленного комментария.
В этом видеоуроке мы займёмся реализацией редактирования комментария на jQuery и Ajax.
В этом видео Вы увидите, как реализуется удаление комментариев без перезагрузки страницы, разумеется, с помощью jQuery и Ajax.
ЧПУ-ссылки крайне важны для оптимизации под поисковые системы. В этом Бонусе Вы увидите, как преобразуются адреса вида http://mysite.ru/article?id=570 в адреса вида http://mysite.ru/sozdanie-sajta.html на сайте MyRusakov.ru.
Содержание:
Хранение соответствий URI-адресов и псевдонимов страниц будет храниться в отдельной таблице, и её созданием мы и займёмся в данном уроке.
В этом видео мы создадим дополнительные классы, отвечающие за обработку псевдонимов.
В этом видео мы запустим механизм ЧПУ-ссылок, отредактировав наш маршрутизатор.