#architecture #mvc
PHP сегодня — это не просто формочки да работа с базой данных. Это архитектура, паттерны и множество лучших практик создания приложения на данном языке. В этих двух статьях раскрываются самые популярные принципы создания приложений на PHP:
https://bit.ly/2PxYrfw
https://bit.ly/2QUH59j
PHP сегодня — это не просто формочки да работа с базой данных. Это архитектура, паттерны и множество лучших практик создания приложения на данном языке. В этих двух статьях раскрываются самые популярные принципы создания приложений на PHP:
https://bit.ly/2PxYrfw
https://bit.ly/2QUH59j
Hacker Noon
PHP Software Architecture Part 1: MVC
In this series, we will be talking about PHP software architecture. Some may call it PHP application architecture or even PHP web…
#advanced
Кто любит архитектуру приложений, как мы, могут посмотреть следующий большой плейлист различных видео по самым разным и полезным темам ООП в PHP.
https://github.com/phptodayorg/php-must-watch#architecture-and-design
Кто любит архитектуру приложений, как мы, могут посмотреть следующий большой плейлист различных видео по самым разным и полезным темам ООП в PHP.
https://github.com/phptodayorg/php-must-watch#architecture-and-design
GitHub
GitHub - phptodayorg/php-must-watch: list of interesting conference talks and videos on PHP -
list of interesting conference talks and videos on PHP - - GitHub - phptodayorg/php-must-watch: list of interesting conference talks and videos on PHP -
#advanced #architecture
Кроме устоявшегося уже SOLID, есть еще группа шаблонов для решения проблем, связанных с распределением ответственности между объектами, собранных под общим названием GRASP. Одни из самых интересных - это coupling и cohesion, которые определяют связи между функциональными модулями одного приложения. Подробнее по ссылке:
https://proglib.io/w/04aa1f02
Кроме устоявшегося уже SOLID, есть еще группа шаблонов для решения проблем, связанных с распределением ответственности между объектами, собранных под общим названием GRASP. Одни из самых интересных - это coupling и cohesion, которые определяют связи между функциональными модулями одного приложения. Подробнее по ссылке:
https://proglib.io/w/04aa1f02
Medium
Low Coupling и High Cohesion
Качественный дизайн обладает слабой связанностью (low coupling) и сильной связностью (high cohesion). Это значит, что программный…
#advanced #architecture
Домены, поддомены, ограниченные контексты и другие понятия из мира DDD в большой обзорной статье.
https://medium.com/nick-tune-tech-strategy-blog/domains-subdomain-problem-solution-space-in-ddd-clearly-defined-e0b49c7b586c
Домены, поддомены, ограниченные контексты и другие понятия из мира DDD в большой обзорной статье.
https://medium.com/nick-tune-tech-strategy-blog/domains-subdomain-problem-solution-space-in-ddd-clearly-defined-e0b49c7b586c
Medium
Domain, Subdomain, Bounded Context, Problem/Solution Space in DDD: Clearly Defined
Domain-Driven Design is an approach to designing systems, usually software, that emphasises creating a common language between domain…
#architecture
Когда возникает вопрос о том, чтобы наша бизнес-сущность имела различные состояния, мы создаем у сущности поле
А расскажите про свой опыт управления сущностями с разными статусами в комментариях.
Когда возникает вопрос о том, чтобы наша бизнес-сущность имела различные состояния, мы создаем у сущности поле
state/status
, которое помогает ориентироваться в том, как управлять сущностью и какие операции допустимы. Такой подход кажется не совсем удобным, когда бизнес-операции имеют важное значение в разное время жизни сущности. Во-первых, дублирование каких-то действий, если вы забыли проверить текущий статус, может сломать состояние модели (что если заказ будет оплачен 2 раза?). Во-вторых, у разных состояний разный набор бизнес-операций, а иногда – разный набор данных: где-то больше, где-то меньше. Было бы удобнее не держать все в одном месте, а делать на каждый статус отдельную таблицу. К сожалению, если вы не используете совместно с таким подходом CQRS, вам будет сложно работать с такой структурой при выборках данных. Есть и другой подход – отдельная таблица со статусами. Подробнее можно почитать по ссылке: https://dba.stackexchange.com/questions/158949/should-i-create-multiple-tables-for-different-entity-states-statuses-or-stages. А расскажите про свой опыт управления сущностями с разными статусами в комментариях.
Database Administrators Stack Exchange
Should I create multiple tables for different entity states, statuses or stages?
I have a tasks table in my database and, in the business domain of interest, tasks can have multiple states: “open”, “begun”, “in review” and “completed”.
Despite having “open” and “begun” in the s...
Despite having “open” and “begun” in the s...
#advanced #architecture
Большая статья, в которой рассматриваются примеры технологий и подходов при построении высоконагруженных приложений:
1. Балансировщики нагрузки;
2. SQL или NoSQL базы данных;
3. Шардинг;
4. Репликация;
5. Кэширование;
6. CDN;
7. Long-polling vs Websockets vs SSE.
https://proglib.io/w/4bc624df
Большая статья, в которой рассматриваются примеры технологий и подходов при построении высоконагруженных приложений:
1. Балансировщики нагрузки;
2. SQL или NoSQL базы данных;
3. Шардинг;
4. Репликация;
5. Кэширование;
6. CDN;
7. Long-polling vs Websockets vs SSE.
https://proglib.io/w/4bc624df
Medium
How to design a system to scale to your first 100 million users
Think Big, Do Small, Learn Fast
#advanced #architecture
Хорошая статья с многочисленными выдержками из книг и статей на тему управления логикой приложения и проектированию сервисного слоя, Use Case, CQRS, Event Sourcing и др.
https://emacsway.github.io/ru/service-layer/
Хорошая статья с многочисленными выдержками из книг и статей на тему управления логикой приложения и проектированию сервисного слоя, Use Case, CQRS, Event Sourcing и др.
https://emacsway.github.io/ru/service-layer/
emacsway.github.io
Проектирование Сервисного Слоя и Логики Приложения — @emacsway's blog
Эта статья посвящена вопросам управления Логикой Приложения и проектированию Сервисного Слоя (Service Layer), Use Case, CQRS, Event Sourcing, MVC и др.
#advanced #architecture
"DRY – это про знания. Дублирование кода – это не проблема", – так эту статью начинает Матьяс Верраес. Статья рассказывает о том, о чем на самом деле говорит принцип "Don't repeat yourself".
https://verraes.net/2014/08/dry-is-about-knowledge/
"DRY – это про знания. Дублирование кода – это не проблема", – так эту статью начинает Матьяс Верраес. Статья рассказывает о том, о чем на самом деле говорит принцип "Don't repeat yourself".
https://verraes.net/2014/08/dry-is-about-knowledge/
Mathias Verraes' Blog
DRY is about Knowledge
Code duplication is not the issue.
#advanced #architecture
Frank De Jonge, автор Flysystem, рассказывает о том, какие типы событий бывают в event-driven системах.
https://blog.frankdejonge.nl/the-different-types-of-events-in-event-driven-systems/
Frank De Jonge, автор Flysystem, рассказывает о том, какие типы событий бывают в event-driven системах.
https://blog.frankdejonge.nl/the-different-types-of-events-in-event-driven-systems/
Frank on Software
The different types of events in event-driven systems
Event-driven systems come in all sorts of shapes and sizes. The obvious commonality is; they all use events to communicate information. These events come in many shapes and sizes, and determining what goes into an event has an immense impact on the design…
👍1