Язык программирования PHP каждый год входит в топ-10 самых популярных и постоянно развивается. Появляются новые инструменты и стандарты, с которыми PHP-разработчики создают веб-сервисы, элегантные, быстрые и надёжные. Число проектов растёт, а вместе с ними растёт и потребность в профессионалах.
Ниже мы собрали знания, которые помогут разработчику писать красивый и эффективный код на PHP и не отставать от мейнстрима.
PHP для начинающих
С чего же начать учить PHP? Для новичков отлично подойдут следующие ресурсы с основами:
- владеть английским на уровне чтения;
- знать возможности PHP 7;
- иметь навыки HTML/CSS хотя бы на базовом уровне. Помогут разобраться: справочник по HTML, справочник по CSS;
- следовать стандартам и оформлению кода (
PSR-2 ,PSR-12 ). Поможет разобраться: PHP Standarts Recommendation; - иметь опыт работы с системой контроля версий Git и знать GitFlow: Помогут разобраться: Pro Git Скотта Чакона и Бена Страуба, Git Flow, статья «Удачная модель ветвления» на «Хабре»;
- уметь работать с менеджером зависимостей Composer. Поможет разобраться: getcomposer;
- понимать принципы работы протокола HTTP(S);
- иметь опыт работы с Linux через консоль;
- уметь настраивать
web-сервер (Nginx, Apache); - знать Docker и Vagrant. Помогут разобраться: статья «Полное практическое руководство по Docker: с нуля до кластера на AWS» на «Хабре»;
- иметь опыт работы с
web-фреймворками (Yii, Laravel, Symfony, Slim Framework); - иметь опыт работы с инструментами развертывания. Помогут разобраться: проект Deployer и введение в работу с ним на «Хабре»;
- иметь опыт работы с RDBMS/NoSQL (MySQL, PostgreSQL, MongoDB, Redis);
- иметь представление о работе с очередями (Redis, RabbitMQ
и т. д. ). Помогут разобраться: Очереди сообщений на RuHigload, «Сервер очередей» на «Хабре»; - уметь организовывать обработку задач в фоновом режиме (supervisord, cron, systemd
и т. д. ); - уметь работать с кэшем;
- иметь опыт проектирования REST API. Помогут разобраться: статья «Разработка web API» и «Архитектура REST» на «Хабре»;
- уметь документировать API (API Blueprint, Swagger);
- знать SemVer;
- уметь ООП;
- понимать и грамотно применять принципы SOLID. Помогут разобраться: статья «Шпаргалка по
SOLID-принципам с примерами на PHP» и SOLID на Хабре, статья From stupid to SOLID code; - понимать и грамотно применять принципы GRASP. Помогут разобраться: ООП для ООП: GRASP;
- иметь представление о других общих принципах: CQS, DRY, YAGNI, KISS и так далее. Помогут разобраться: This is not the DRY you are looking for, «Три ключевых принципа ПО, которые вы должны понимать» на «Хабре»,
Command-query separation; - понимать механизм Dependency Injection и иметь опыт работы с Dependency Injection Container. Помогут разобраться: «Инверсии зависимостей управления впрыском» на «Хабре»;
- понимать MVC и иметь представление о других архитектурах UI. Помогут разобраться: «Шпаргалка по
MV-паттернам для проектированиявеб-приложений » на «Хабре»; - иметь представление о Hexagonal/Onion Architecture, CQRS. Помогут разобраться: «Чистая архитектура», «Гексагональная архитектура» и «Основы CQRS» на «Хабре»;
- понимать и грамотно применять паттерны GoF (Adapter, Decorator, Visitor, Composite
и т. д. ). Помогут разобраться: «Шпаргалка по шаблонам проектирования» на «Хабре», Design patterns for humans; - понимать и грамотно применять Patterns of Enterprise Application Architecture (ActiveRecord, DataMapper, UnitOfWork, Repository, ValueObject, Domain Model
и т. д. ); - знать что такое refactoring и уметь применять его;
- поддерживать чистоту в коде и понимать, зачем это нужно. Поможет разобраться: «Чистый код»;
- уметь разбираться в чужом коде и облагораживать его;
- знать свои инструменты и уметь самостоятельно в них разбираться;
- уметь находить простые и оптимальные решения сложных задач.
С чего может начать новичок:
- PHP Manual;
- Руководство по Laravel;
- The Definite Guide to Yii 2.0;
- Форум
Yii-программистов ; - Подборка полезных инструментов.
Курсы, блоги и статьи про web, ООП и разработку в целом:
Онлайн-интенсив «Неделя ООП»;- Code Academy;
- Code School;
- Манифест The
Twelve-Factor App; - Блог Сергея Теплякова.
Литература для изучения
Наша команда собрала лучшие книги по PHP-программированию для начинающих:
Объектно-ориентированный анализ и проектирование. Гради Буч;- Чистый код. Создание, анализ и рефакторинг. Роберт К. Мартин;
- Рефакторинг. Мартин Фаулер;
- Совершенный код. Стив Макконнелл.
Стоит яростно следить за:
- RuHighload;
- Блог Дениса Ахрамеева;
- Matthias Noback;
- William Durand;
- Mathias Verraes;
- Elnur Abdurrakhimov.
Twitter:
Хабы на Habrahabr:
- Разработка;
- PHP;
- Программирование;
- Разработка
веб-сайтов ; - ООП;
- Проектирование и рефакторинг;
- Анализ и проектирование систем.