PHP-BE1
311 subscribers
338 photos
11 videos
19 files
620 links
Канал по PHP, полезный и интересный контент для всех уровней.
По вопросам сотрудничества @cyberJohnny
Download Telegram
#advanced #video

Интервью с Мэтью Брауном, автором статического анализатора Psalm.

http://phptownhall.com/episode-81-the-book-of-psalm/
#advanced

Command Bus, или Message Bus, или Event Bus – как только ни называют шину сообщений. Удобный инструмент, который позволяет иметь единую точку входа для сообщений/команд/событий и абстрагироваться от выбора обработчика и их количества. Также некоторые продвинутые шины сообщений позволяют подключать очереди для асинхронной обработки сообщений. На данный момент для php доступны неколько реализаций:

1. https://github.com/SimpleBus/message-bus – шина от Матьяса Нобака. Достаточно скромная реализация, которая тем не менее послужила вдохновением для symfony/messenger.

2. https://github.com/onliner/command-bus – молодой command bus от onliner, очень перспективный проект с хорошим кодом и возможностью использовать брокеры очередей.

3. https://github.com/thephpleague/tactician – command bus от ребят из phpleague, из коробки не умеет откладывать сообщения, но можно подключить bernard, как советуют в документации https://tactician.thephpleague.com/plugins/bernard/.

https://github.com/symfony/messenger - мессенджер Symfony в представлении не нуждается, однако вызывает смешанные чувства. За сложностью реализации скрываются недочеты, некоторые неудобства, а в экспериментальной версии были баги. В целом, инструмент взрослый, можно попробовать.
#mustread

Большой репозиторий, в котором собраны ссылки на различные инструменты, программы, утилиты, статьи, книги и видео для разработчиков. Это ваше чтение на лето.

https://github.com/trimstray/the-book-of-secret-knowledge
#architecture

Когда возникает вопрос о том, чтобы наша бизнес-сущность имела различные состояния, мы создаем у сущности поле state/status, которое помогает ориентироваться в том, как управлять сущностью и какие операции допустимы. Такой подход кажется не совсем удобным, когда бизнес-операции имеют важное значение в разное время жизни сущности. Во-первых, дублирование каких-то действий, если вы забыли проверить текущий статус, может сломать состояние модели (что если заказ будет оплачен 2 раза?). Во-вторых, у разных состояний разный набор бизнес-операций, а иногда – разный набор данных: где-то больше, где-то меньше. Было бы удобнее не держать все в одном месте, а делать на каждый статус отдельную таблицу. К сожалению, если вы не используете совместно с таким подходом CQRS, вам будет сложно работать с такой структурой при выборках данных. Есть и другой подход – отдельная таблица со статусами. Подробнее можно почитать по ссылке: https://dba.stackexchange.com/questions/158949/should-i-create-multiple-tables-for-different-entity-states-statuses-or-stages.

А расскажите про свой опыт управления сущностями с разными статусами в комментариях.
#advanced #laravel

IoC, DI, контейнер и сервис-провайдеры — многие могут понимать смысл этих вещей, но не уметь пользоваться ими свободно или делать их сами. Исправляем эту ситуацию и изучаем внедрение зависимостей на примере фреймворка Laravel.

https://blog.farhan.dev/laravel-service-container-and-service-providers-explained
#php

Не приняли: https://wiki.php.net/rfc/partial_function_application. А могла бы быть крутая фича в языке.
#advanced

Подробное сравнение двух брокеров сообщений – Kafka и RabbitMQ.

https://betterprogramming.pub/rabbitmq-vs-kafka-1779b5b70c41
#middle #symfony

Большой обзор всех компонентов Symfony: зачем каждый из них нужен, когда применять, какие стандарты реализует и многое другое.

https://alex-daubois.medium.com/ultimate-guide-to-symfony-components-2021-7ac9908f8aa2
#advanced

Автор phpstan рассказывает, как создавать собственные правила для решения специфических проблем в вашем проекте.

https://phpstan.org/developing-extensions/rules
#advanced

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

https://github.com/donnemartin/system-design-primer
#advanced

Laravel | Route Model binding in Laravel

В статье рассказано, что такое Route-Model Binding, как его использовать и настраивать.

https://dev.to/arifiqbal/route-model-binding-in-laravel-4amk