PHP для фронтенд-разработчика
Изучение PHP и соответствующих приемов разработки позволит:
- увереннее работать с инфраструктурой проекта на PHP;
- лучше понимать бэкенд-разработчиков и формулировать вопросы/задачи для них;
- глубже погрузится в разработку на ООП-языке;
- познакомится с некоторыми практиками промышленной разработки ПО, не характерными для JS, но важными для понимания процесса;
- познакомиться с основами архитектуры на бэкенде (MVC, Autoloading, Dependecy Iinjection).
Пройдите курс The PHP Practitioner. Пишите код вслед за автором, пересматривайте видео, если с первого раза не поняли. Гуглите интересные или не до конца понятные моменты.
Курс считается пройденным, если вы сможете ответить на контрольные вопросы и показать рабочий код из уроков. Ответы на вопросы подготовьте письменно и выложите вместе с кодом на какой-нибудь гит-сервис.
Контрольные вопросы
- Переменные
- Как создать переменную в PHP?
- Как вывести переменную внутри строки?
- Файлы
- Как в PHP разделить код на несколько файлов?
- Массивы
- Что такое массив?
- Что такое ассоциативный массив?
- Как из массива/ассоциативного массива достать элемент?
- Функции
- Что такое функция?
- Ошибки
- Что такое эксепшен (исключение)?
- Как поймать эксепшен и вывести пояснение, если что-то пойдет не так в коде?
- Классы, ООП
- Что такое класс?
- Что такое метод класса? Что такое свойство класса?
- Зачем нужны публичные, приватные и защищенные методы/свойства?
- Что такое инстанс (экземпляр класса)?
- Чем отличается статический метод класса от обычного? Как создать/вызвать статический метод?
- Как обычно именуют классы?
- PDO
- Что такое PDO? Зачем нужен этот класс?
- Как подключить PDO, чтобы начать с ним работать?
- Общие
- Что такое рефакторинг? Для чего он нужен?
- Что такое API?
- Что такое принцип единственной ответственности (one responsibility)?
- Типизация
- Что такое type hinting (контроль типов)?
- Для чего нужен type hinting?
- Как передавать параметр определенного типа?
- Как передать параметр определенного класса?
- Конфигурация проекта
- Почему лучше выносить название базы, пароль и пр. отдельно, а не использовать по месту?
- Роутинг
- Что такое роутинг?
- Зачем нужно выносить этот функционал в отдельный класс/модуль?
- Что такое URI и в чем его отличие от URL?
- Как в статическом методе создать экземпляр родительского класса?
- Что такое чейнинг и как его реализовать? Приведите пример.
- Вьюхи
- Какие движки для шаблонизации распространены в PHP?
- Функции для работы с массивами
- Сколько функций есть в PHP для работы с массивами?
- Как отфильтровать массив?
- Как преобразовать элементы массива (сформировать другой массив на основе текущего)?
- Как составить массив значений по свойству объекта или ключу массива?
- Forms, Request Types, and Routing
- Какие бывают запросы? С какими из них работают чаще всего?
- Как достать разные части
URL
? - Как сохранить в базу то, что отправлено из формы?
- Dynamic Inserts With PDO
- Как в PHP сделать из массива строку, разделенную запятыми?
- Как в строку
Hello, my name is %s, I'm %d
передать параметры и что означают%s
и%d
? - Как сделать редирект на определенный URI?
- Composer Autoloading
- Что такое Composer? Где он хранит свои настройки?
- Что нужно сделать, чтобы автоматически загружать все классы по определенному пути? Что это нам дает?
- Что такое PSR-4 и какие еще бывают PSR?
- Your First DI Container
- Когда я добавляю класс в проект, который использует автолоадинг Композера, почему он сразу не работает?
- Refactoring to Controller Classes
- Почему не стоит создавать много глобальных функций?
- Switch to Namespaces
- Зачем нужны неймспейсы? Что они нам дают?
- Как указать, что данный класс использует другой класс по неймспейсу?
- Зачем нужны фреймворки?