php

Практика PHP для начинающих

5:00 Часов
Зачислено 1 учеников

5.00
1 Оценок

Описание курса

Данная серия уроков предназначена для начинающих программистов на PHP и веб-разработчиков. Цель предлагаемых уроков - научить писать правильный и красивый код, а также показать основные методики написания структурированного кода. В этих уроках будут затронуты такие темы как:
- Как отделить логику от представления.
- Как избежать дублирования кода.
- Что такое Router (маршрутизатор) и как написать собственный класс Router.
- Как работать с базой данных (БД), используя PDO и как написать свой класс для работы с БД.
- Что такое Service Container и как написать свой Service Container.
- Что такое Middleware и как написать свой Middleware.
- и т.д.

Комментарии (0)

Из первого видео вы узнаете, как отделить логику от представления, создав файлы контроллера и вида.

-

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

-

Из данного видео вы узнаете, что такое точка входа в приложении и какие есть варианты для ее создания. Если говорить в двух словах, то точка входа в приложениях MVC необходима для того, чтобы принять все запросы к сайту. Таким образом, запросы не будут уходить на служебные или любые другие файлы, которые не должны отдаваться в ответ на HTTP-запрос. Все запросы будут попадать к фронт-контроллеру (точке входа). Далее уже будет подключаться маршрутизатор (Router), который будет перенаправлять запрос на нужный контроллер.



В этом уроке будет создана точка входа приложения, а также ряд констант для настроек путей к той или иной составляющей приложения.

-

В данном видео мы напишем самый простой вариант маршрутизатора (Router) для приложения MVC. В дальнейших уроках мы его перепишем, сделаем гибче, благодаря регулярным выражениям, и оформим в виде класса. Но пока простейший вариант, написанный в этом уроке, нам вполне подойдет и на все 100 будет справляться с задачей получения запроса и подключения контроллера, который должен обрабатывать этот запрос.

-

В данном видео мы немного структурируем приложение, создав папку с файлами конфигурации, а также файл маршрутизатора. Кроме этого, мы создадим карту маршрутов приложения, которую будет использовать маршрутизатор.
Также в уроке будет создана база данных (БД) с таблицей статей.

-

В данном видео мы приступим к созданию класса для работы с базой данных (БД) - это будет класс Db (Database).

-

В данном видео мы продолжим написание класса для работы с базой данных (БД) - это класс Db (Database). В этом уроке мы напишем такие методы, как find(), findAll и findOrFail() для получения коллекции данных. Также мы добавим в класс Database защиту от sql-инъекций, сделав запросы к базе данных безопасными.

-

В данном видео мы продолжим написание класса для работы с базой данных (БД) - это класс Db (Database). В этом уроке мы реализуем паттерн Singleton (Одиночка) для класса Database. Данный паттерн программирования обеспечит возможность создания только одного экземляра класса. Тем самым мы не допустим создания более одного соединения с БД.

-

Этим видео мы открываем очень обширную тему - работу с пользовательскими данными. Речь идет о получении данных от пользователя, в первую очередь через формы, а также об обработке полученных данных. И эта тема связана с целым рядом других сопутствующих тем. Например, полученные данные мы должны сохранить в БД. Но перед сохранением нам необходимо обязательно проверить эти данные, т.е. провести их валидацию. В этом уроке мы напишем простейший вариант валидации данных на сервере и проверим заполнение всех обязательных полей.

-

В этом видео мы немного оптимизируем код, добавим сразу несколько функций-помощников (хелперов). Эти функции позволят сохранить и вывести данные после валидации в случае ошибок, а также позволят избежать искажения данных при вставке их в поля формы или же исполнения кода при обычном выводе на страницу. Также мы напишем функция для редиректа на нужную страницу. Это поможет перезапрашивать страницу, сбрасывая POST-данные.

-

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

-

В этом видео мы поговорим о таких темах, как пространства имен (namespace) и автозагрузка (autoload). Это связанные и достаточно важные темы. Благодаря использованию пространства имен и автозагрузки мы можем избежать возможных конфликтов в именованиях классов, а также упростить их подключение.

-

В этом видео мы немного допишем класс Validator и реализуем метод показа ошибок для выбранного поля. Также мы добавим валидатор для проверки совпадения полей. Этот валидатор может пригодиться если, к примеру, нужно проверить совпадение полей пароля и повтора пароля.

-

В этом видео мы приступим к написанию класса маршрутизации - класса Router. Данный класс должен уметь не только понимать запрос по его адресу, но и по методу, которым был запрошен этот адрес. Проще говоря, один и тот же адрес, запрошенный разными методами, может быть обработан разными контроллерами. Таким образом, нам маршрутизатор будет следовать правилам REST API и сможет принимать запросы не только методами GET и POST, но и такими методами, как DELETE или PUT, к примеру.

-

В этом видео мы допишем класс маршрутизации - Router. Данный класс теперь сможет принимать запросы не только стандартными методами GET и POST, но и методами RESTfull API, например методом DELETE для удаления ресурса. Также из урока вы узнаете, как эмулировать при отправке формы нестандартные методы запроса. Ну и, наконец, вы узнаете, как принимать одновременно запросы к стандартной части приложения и к API части приложения.

-

В этом видео мы напишем класс Service Container. Задача этого класса заключается в том, чтобы хранить сервисы или, если говорить проще, экземпляры других классов. Но Service Container не просто выступает в роли хранилища. По запросу из него всегда можно получить нужный объект, который хранится в контейнере. Это очень удобно, поскольку достаточно всего лишь запросить нужный объект и Service Container его предоставит. Нам не нужно ни создавать этот объект, ни задумываться о параметрах, которые необходимо в него передать. Все это делается единожды, при помещении в контейнер нужной зависимости. После этого в любом месте нашего приложения мы можем запросить объект из контейнера.

-

Из этого урока вы узнаете о том, что такое Middleware и для чего он необходим. Если говорить в двух словах, то Middleware - это промежуточный слой между запросом и контроллером, который должен обработать этот запрос. Задача Middleware заключается в том, чтобы выполнить определенные проверки или действия перед тем, как передать запрос на обработку контроллеру. Или же не дать передать этот запрос контроллеру, если какие-либо проверки не были пройдены.



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

-

Из этого урока вы узнаете о принципах создания постраничной навигации (пагинации). Зная алгоритм построения пагинации, мы сможем написать в дальнейшем собственный класс пагинации, который можно будет использовать для различных проектов. В данном уроке мы, пока что без класса, просто выведем пагинацию, которая уже будет работать в простейших случаях.

-

В этом уроке мы рассмотрим два принципа построения пагинации: Cursor (курсорная) и Offset (с отступами). Собственно, вариант пагинации с отступами мы как раз и рассморели в предыдущем видео - это классическая пагинация. А вот вариант с курсорами уже немного отличается и в некоторых случаях он может быть более востребован.

-

В этом уроке мы приступим к написанию класса Pagination. Пагинация, которую будет строить данный класс, будет достаточно гибкой и сможет как показывать все страницы, если их не больше указанного количества, так и показывать только определенное число страниц, если их очень много. Также класс будет корректно работать с возможными GET-параметрами, не теряя их.

-

В этом уроке мы завершим написание класса Pagination. Пагинация, которую будет строить данный класс, будет достаточно гибкой и сможет как показывать все страницы, если их не больше указанного количества, так и показывать только определенное число страниц, если их очень много. Также класс будет корректно работать с возможными GET-параметрами, не теряя их.

-

В этом уроке мы напишем код регистрации пользователей. При этом мы немного модифицируем класс Router, чтобы он позволял одному контроллеру обрабатывать сразу несколько методов запроса. А также мы добавим еще один валидатор к классу валидации - это будет метод unique. Данный валидатор сможет проверить уникальность поля email в БД перед добавлением записи.

-

В этом уроке мы напишем код авторизации пользователей. Алгоритм входа пользователя в учетную запись достаточно прост. Нам необходимо сравнить пару логин/пароль с аналогичной парой в БД. При этом, поскольку пароль в БД хранится в виде хэша, мы будем сравнивать поэтапно. Вначале мы найдем пользователя по логину и, если это удалось, тогда используем функцию password_verify() для сравнения строки пароля с его потенциальным хэшем. Если все проверки будут пройдены - пользователь будет считаться авторизованным.

-

В этом уроке мы приступим к реализации загрузки файлов, в частности изображений. Для этого мы немного расширим класс Validator и добавив в него два правила валидации - для проверки раширения и размера файла.

-

В этом уроке мы завершим реализацию загрузки файлов, в частности изображений. Для этого мы немного расширим класс Validator и добавив в него два правила валидации - для проверки раширения и размера файла. Загружаемые файлы мы не будем скидывать в одну папку, а реализуем вложенную структуру папок формата Год/Месяц/Число, в котору и будем сохранять полученный файл.

-
Андрей Кудлай

Андрей Кудлай

Веб-разработчик
5.00
Верный пользователь
Эксперт
Серебряные курсы
Популярный
Фантастическая поддержка

Отзывы учеников

5.00
1 Отзывы
Качество контента (5)
Навыки преподавателя (5)
Стоимость товара (5)
Качество поддержки (5)

Отзывы (1)

Качество контента
Навыки преподавателя
Стоимость товара
Качество поддержки
Анастасия
24.11.2023 | 21:57
Спасибо за курс!
Бесплатно
Гарантия возврата денег - 14 дней
В Курс включено:
Вместимость:
Неограниченно
Продолжительность:
5:00 Часов
Учеников:
1
Файлы:
25
Дата создания:
24.11.2023

Пожаловаться на курс

Пожалуйста, кратко опишите содержание жалобы.

Поделиться

Поделись курсом со своими друзьями

Купить за баллы

Центр настроек конфиденциальности

Настройки файлов cookie

Мы используем файлы cookie для сохранения или получения информации о вашем браузере. Эта информация может относиться к вам, вашим предпочтениям, вашему устройству или в основном будет использоваться для работы веб-сайта в соответствии с вашими ожиданиями. Мы уважаем ваше право на конфиденциальность данных, поэтому вы можете отказаться от использования некоторых типов файлов cookie. Нажимайте на заголовки категорий для получения более подробной информации и изменения настроек. При этом следует помнить, что блокировка некоторых типов файлов cookie может повлиять на использование вами веб-сайта и ограничить предлагаемые нами услуги.