PHP best practices😏
Публичный пост
9 апреля 2021
747
здравствуйте 🙂
читал пост про python и подумал о php. почему бы и нет?
давайте возьмём версии 7+ и от уйдём от излишнего ругательства php 😉🙃
как обычно, можно так же поделиться блогами, книжками, видео, github и т. д.
надеюсь, обойдёмся без холиваров🙏🏻
Phpstan + psalm + linter + codesniffer + infection.
Все это в купе с тестами сильно поднимает качество кода, особенно если выкрутить на максимум infection.
помоему бест практис с пхп в 2021 - это поменять стек... :)
Самое важное уже в принципе описали, добавлю просто парочку полезных ссылок.
Чтобы не быть в бункере:
Исторически так сложилось, что в PHP довольно низкий порог вхождения, поэтому много низкоквалифицированных разработчиков в индустрии, которые слепо следуют за тем, что им навязал фреймворк или что нагуглили на стековерфлоу. Культура написания красивого кода, правильной архитектуры итд только в последние годы начала развиваться. Очень советую не ограничиваться рамками фреймворка и больше абстрагироваться, смотреть на все как инструмент для решения определенной проблемы, разделять где бизнес-логика, а где техническая реализация/инфраструктура. Учитывая что вопрос задан и много классной инфы уже накидали, базовые задатки уже есть. :)
https://spatie.be/products/front-line-php
https://www.youtube.com/channel/UCgqg8zPxOopwK-FoNeThByA
Призываю в тред @samdark ;)
Ну в самых первых - PSR, а точнее PSR-12 как основа code style, ну и логгер, мидлваря, контейнер.
Codesniffer чтобы проверять code style, куча готовых проверок чтобы закрутить пожёстче есть тут slevomat/coding-standard.
Какой-то статический анализатор с поддержкой дженериков и расширенного описания массивов: PHPStan, Psalm.
Тесты писать: Codeception, PHPUnit, Infection. И, соответственно, писать тестируемый код, использовать Inversion of Control.
Использовать актуальную версию PHP (это 8 сейчас).
Отделять бизнес-логику от инфраструктуры.
Писать код в PHPStorm.
Инфраструктура - PHP-FPM + Nginx базово, для тех кому побыстрее можно и Swoole, Roadrunner, etc.
Настроить сам PHP (настроить opcache, выключить xdebug на проде, включить preload, включить jit).
Best practices это не совсем про язык. Можно почитать Фаулера, Роберта Мартина (дядя Боб), Эванса (Domain-driven design). PSR это, конечно, хорошо, но оно отлично автоматизируется, а вот гексагональная архитектура - это то, что неплохо было бы раскурить. Возможно, я слишком испорчен "правильным" java подобным энтерпрайзом, но я бы советовал обратить внимание на symfony и все, что вокруг него. На мой взгляд все правильные и взрослые вещи пришли в пыху из java-мира. Еще раз: фреймворк, который помогает, а не мешает строить большие системы (symfony), Inversion of control, тесты, гексагональная архитектура, DDD. Остальное автоматизируется. Стоит еще так же понимать, для чего нужен php, и для чего его использовать не стоит. Собственно, как бы это странно ни звучало, но стоит обратить внимание еще и на го, потому что тенденция совершенно очевидна, что это второй необходимый инструмент.
https://deworker.pro
https://elisdn.ru
https://laracasts.com (Не стоит бояться, что на английском, воспринимается хорошо даже с не высоким уровнем. И много годноты не только по laravel) - ну если совсем тяжко - то качать английский
Python best practices
Дико рекомендую почитать Matthias Noback.
Очень хорошо на примерах PHP рассказывает про правильные подходы и как не стрелять себе в ноги
https://matthiasnoback.nl/books/
В принципе в предыдущих комментах уже много годноты накидали.
Добавлю сюда https://3v4l.org/ - онлайн REPL c over 300 версиями PHP.
Еще мне показался интересным Laravel Octane (https://github.com/laravel/octane) как попытка прикрутить Swoole/RoadRunner к популярному фреймворку и тем самым увеличить производительность.