PHP-BE1
311 subscribers
338 photos
11 videos
19 files
620 links
Канал по PHP, полезный и интересный контент для всех уровней.
По вопросам сотрудничества @cyberJohnny
Download Telegram
#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
Архитектура веб-приложения PHP

#skills
https://php.zone/php-dlya-professionalov/upravlenie-pamyatyu-v-php

Сегодня разговор пойдёт о том, каким образом в PHP реализовано хранение данных в памяти и о том, что же на самом деле скрывает за собой довольно простой код.

#skill
☝️Что такое Memcache и Memcached в PHP? Возможно ли разделить один экземпляр Memcache между несколькими проектами PHP?

Memcached - это эффективный демон кэширования, разработанный специально для снижения нагрузки на базу данных в динамических веб-приложениях. Модуль Memcache предлагает удобный процедурный и объектно-ориентированный интерфейс для Memcached.

Memcache - это пространство для хранения данных, и Memcache можно запускать на одном или нескольких серверах. Следовательно, можно совместно использовать один экземпляр Memcache между несколькими проектами.

Можно настроить клиент для общения с отдельным набором экземпляров. Поэтому также допускается запуск двух разных процессов Memcache на одном хосте. Несмотря на то, что они выполняются на одном хосте, оба таких процесса Memcache остаются независимыми, если нет разделения данных.

PHP-BE1

#info