Файзрахманов Адель - Архитектура сложных веб-приложений. С примерами на Laravel [2020, PDF/EPUB, RUS]

Reply to topic
DL-List and Torrent activity
Size:  7 MB   |    Registered:  30 days   |    Completed:  2 times
Seeders:  751  [  0 KB/s  ]   Leechers:  49  [  0 KB/s  ]   Show peers in full details
 
   
 
 
Author Message

Download WYSIWYG ®

Gender: Male

Longevity: 10 years

Posts: 1540

Post 02-May-2025 19:05

[Quote]

Архитектура сложных веб-приложений. С примерами на Laravel
Год издания: 2020
Автор: Файзрахманов Адель
Издательство: Leanpub
Язык: Русский
Формат: PDF/EPUB
Качество: Издательский макет или текст (eBook)
Интерактивное оглавление: Да
Количество страниц: 271
Описание: Эта книга просто некий обзор практик, которые мне показались полезными при разработке приложений. Возможно, кому-то она поможет выбрать нужную для своего проекта. Главное, нужно понять, что она не о том, что надо каждое приложение взять и переписать с использованием Event Sourcing. К каждому приложению нужен свой подход. Одни и те же практики отлично подходят к одним приложениям, но будут вредны для других.
Laravel Idea — расширение для платформы IDEA (PhpStorm), экономящее время при разработке решений на основе Laravel. Прекрасное автозаполнение магии Laravel, навигация по коду, генераторы кода, автокомплит валидаторов и роутов, и многое другое.
Фреймворки, такие как Laravel, содержат кучу RAD-возможностей, которые позволяют разрабатывать приложения очень быстро, срезая некоторые углы. Они весьма полезны на стадии приложения «интерфейс для работы с базой данных», но часто становятся источником боли по мере развития. Я делал много рефакторингов просто, чтобы избавить приложения от таких возможностей. Вся эта авто-магия и «удобные» валидации в стиле «быстро сходить в базу данных и проверить нет ли такого email в таблице» хороши, но разработчик должен полностью понимать как они работают и когда лучше от них отказаться.
Я должен предупредить:
Эта книга не для начинающих. Чтобы понимать описываемые проблемы вы должны поучаствовать хотя бы в одном проекте. В одиночку или в команде.
Эта книга не пособие. Много шаблонов будут описаны поверхностно, с целью просто познакомить читателя с ними. Несколько полезных ссылок вас ожидает в конце книги.
Примеры этой книги никогда не будут идеальными. Я могу назвать какой-то код «корректным» и найти кучу ошибок в нем в следующей главе.

Примеры страниц (скриншоты)

Оглавление

1. Предисловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2. Плохие привычки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Нарушение SRP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Мышление в стиле CRUD . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Поклонение темной магии PHP . . . . . . . . . . . . . . . . . . . . . . . . 11
«Быстрая» разработка приложений (RAD) . . . . . . . . . . . . . . . . . . 14
Экономия строк кода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Прочие источники боли . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3. Внедрение зависимостей . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Принцип Единственной Ответственности . . . . . . . . . . . . . . . . . . 18
Dependency Injection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Наследование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Пример с загрузкой картинок . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Расширение интерфейсов . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Трейты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Статические методы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Пара слов в конце главы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
4. Безболезненный рефакторинг . . . . . . . . . . . . . . . . . . . . . . . . 70
“Статическая” типизация . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Шаблоны . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Поля моделей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Laravel Idea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
5. Слой Приложения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Передача данных запроса . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Работа с базой данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
Сервисные классы или классы команд? . . . . . . . . . . . . . . . . . . . 93
6. Обработка ошибок . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Исключения (Exceptions) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Базовый класс исключения . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
Глобальный обработчик . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Проверяемые и непроверяемые исключения . . . . . . . . . . . . . . . . 109
Пара слов в конце главы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
7. Валидация . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Валидация связанная с базой данных . . . . . . . . . . . . . . . . . . . . . 117
Два уровня валидации . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Валидация аннотациями . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Value objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
Объект-значение как композиция других значений . . . . . . . . . . . 131
Объекты-значения не для валидации . . . . . . . . . . . . . . . . . . . . . 133
Пара слов в конце главы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
8. События . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Database transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Очереди . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
События . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Использование событий Eloquent . . . . . . . . . . . . . . . . . . . . . . . 145
Сущности как поля классов-событий . . . . . . . . . . . . . . . . . . . . . 147
9. Unit-тестирование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
Первые шаги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
Тестирование классов с состоянием . . . . . . . . . . . . . . . . . . . . . . 157
Тестирование классов с зависимостями . . . . . . . . . . . . . . . . . . . 160
Типы тестов ПО . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Тестирование в Laravel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Unit-тестирование Слоя Приложения . . . . . . . . . . . . . . . . . . . . . 176
Стратегия тестирования приложения . . . . . . . . . . . . . . . . . . . . . 184
10. Доменный слой . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
Когда и зачем? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
Реализация Доменного слоя . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
Обработка ошибок в доменном слое . . . . . . . . . . . . . . . . . . . . . 227
Пара слов в конце главы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
11. CQRS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
Чтение и запись - это разные ответственности? . . . . . . . . . . . . . . 231
Типичный сервисный класс . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
Command Query Responsibility Segregation . . . . . . . . . . . . . . . . . . 238
Пара слов в конце главы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
12. Event sourcing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
Игра королей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
Unit-тестирование сущностей . . . . . . . . . . . . . . . . . . . . . . . . . . 248
Мир без магии . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
Реализация ES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
Уникальные данные в ES-системах . . . . . . . . . . . . . . . . . . . . . . 264
Пара слов в конце главы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
13. Заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
Классика . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
DDD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
ES и CQRS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
Unit тестирование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
[solely-soft.top].t210804.torrent
Torrent: Registered [ 2025-05-02 19:05 ] · 36780FFFCD89E9E3FA14336EAA6FBAB717099CAB

10 KB

Status: checked
Completed: 2 times
Size: 7 MB
Rate: 
(Vote: 0)
Have thanked: 0  Thanks
Файзрахманов Адель - Архитектура сложных веб-приложений. С примерами на Laravel [2020, PDF/EPUB, RUS] download torrent for free and without registration
[Profile] [PM]
Display posts:    
Reply to topic

Current time is: 02-Jun 08:42

All times are UTC + 2



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum