Разработчик PHP

Напомнить о начале
О курсе

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

В курсе будут затронуты все аспекты разработки PHP-приложений:

  • - система контроля версий Git, GitFlow
  • - MVC модель
  • - паттерны проектирования
  • - Nginx + PHP-fpm
  • - фреймворк Symfony
  • - CI
  • - проектирование приложений

По окончании курса слушатели получат необходимые навыки для трудоустройства на позицию middle PHP разработчика, навыки работы в команде, получат представление о существующих технологиях разработки когда и как их нужно необходимо применять.

Необходимое время: 4 академических часа на занятия и 4 академических часа на домашнюю работу в неделю.

Программа курса
1
Модуль
2
Модуль
3
Модуль
4
Модуль
5
Модуль
В первом модуле знакомство с последними нововведениями в PHP. Посмотрим зачем нам нужны системы контроля версий и как их использовать, на примере GitFlow, посмотрим аспекты реализации задач. Повторяем основные принципы ООП. Изучаем зачем нам нужны паттерны проектирования, сами паттерны, каких они бывают видов. На примере стандартной библиотеки PHP (SPL - Standard PHP Library), смотрим реализацию паттернов.

1. Системы контроля версий - Git, GitFlow. Отличия Git от других систем контроля версий. Примеры организации командной разработки на базе GitFlow.
ДЗ: Создание репозитория

2. Основные принципы ООП. Основные принципы ООП, реализация в PHP.
ДЗ: Тестирование слушателей по полученным знаниям.

3. Паттерны проектирования. Виды паттернов. Примеры использования паттернов в различных практических задачах
ДЗ: Создание приложения на основе паттернов.
На основе полученных знаний из первого модуля продолжаем изучение ООП: концепций на примере фреймворка Symfony. Начнем с того, что разберем для чего вообще нужны фреймворки.
Также рассмотрим в этом модуле каким образом PHP вообще исполняется для веба, уделим особое внимание самой популярной связке nginx + PHP-fpm. Рассмотрим работы в PHP в "консольном режиме" - cron-скрипты, демонизация PHP-приложений.

1. Symfony. Фреймворки как каркасы современных приложений. Углубленное рассмотрение фреймворка Symfony.
ДЗ: Создание приложения на основе Symfony с использованием навыков, полученных в первом модуле обучения.

2. Тестирование, функциональное тестирование, unit-тестирование. Виды тестирования, примеры использования разных видов тестирования на этапах разработки.
ДЗ: Написание тестов к самостоятельно разработанной программе.

3. Отладка приложений. Способы отладки приложений в PHP. XDebug. Отладка приложении с помощью IDE.
ДЗ: Тестирование слушателей по полученным знаниям.

4. Nginx + FPM. Работа WEB-сервера Nginx в связке с менеджером процессов PHP-FPM.
ДЗ: Установка и настройка Nginx

5. Серверный PHP - cron + демоны. Возможности использования PHP без WEB-сервера с помощью cron или демонов.
ДЗ: Написание PHP-демона.
В данном модуле рассмотрим работы с базами данных на примере MySQL - самой популярной релацияонной СУБД. Рассмотрим движки таблиц, в чем отличия, в чем преимущества. Рассмотрим в теории CAP теорему, поговорим о транзакциях. В практике научимся профилировать запросы, находить и устранять слабые места при работе с БД. Рассмотрим веб-сервисы - SOAP, REST. Также отдельно рассмотрим все аспекты безопасного написания веб-приложений.

1. PDO. PDO как способ общения PHP с базами данных.
ДЗ: Адаптация программы для обращения к базе данных через PDO.

2. Немного про теорию реляционных баз данных: транзакции, CAP теорема. ACID-признаки реляционных баз данных.
ДЗ: Проектирование базы данных под определенную задачу.

3. Оптимизация и профилирование запросов. Определение "плохих" запросов, пример работы с командной explain.
ДЗ: Оптимизация запросов.

4. WEB-сервисы, рассмотрим SOAP, REST, их преимущества и отличия.
ДЗ: Написание собственного WEB-сервиса.

5. Безопасность веб-приложений. Будут рассмотрены SQL-инъекции, безопасное хранение паролей, безопасность сайтов (XSS, CSRF).
ДЗ: Обеспечение безопасности в WEB-приложениях.
Работаем над производительностью веб-приложений, изучаем, каким образом использовать кэшироварие, что для этого использовать, каким образом считать эффективность. Рассмотрим каким образом необходимо организовывать веб-приложения чтобы их можно было масштабировать. Рассмотрим трехзвеньевую архитектуру веб-приложений. Поговорим про способы доставки готовых задач в продуктивную среду.

1. Кэширование. Рассмотрим примеры использования кеширования и сервисы, с помощью которых можно организовать кэш.
ДЗ: Разработка стратегии кэширования приложения.

2. Масштабируемость WEB-приложений. Рассмотрим принципы масштабируемости приложений. Рассмотрим stateless и statefull принципы.
ДЗ: Разработка стратегии масштабируемости приложений.

3. Асинхронная обработка (очереди). Примеры применения асинхронной обработки. Использование приложения RabbitMQ для работы с очередями.
ДЗ: Реализация асинхронной обработки очередей с использованием приложения RabbitNQ.
В завершающем модуле студентам предагается выполнить свой проект на основе всех изученных технологий / приемов / e.t.c. Проект можно выполнять как индивидуально, так и в группах по 2-3 человека.

Примеры возможный проектов:
1. Разработка библиотеки для общения с базой данных.
2. Свой проект.
Работодатели