NeoCode
@NeoCode
C/C++ programmer

Что почитать об архитектуре приложений и фреймворков на php?

Добрый день!
Интересует хорошая литература (книги, циклы статей) по архитектуре приложений и фреймворков на php. Желательно на русском для более быстрого изучения.
Проблема в том, что сам язык я знаю, но совершенно не имею представления о правильной архитектуре приложений на php. А в большинстве книг обычно рассматривается синтаксис языка и какие-то примитивные примеры просто для ознакомления с синтаксисом.
Прежде чем решать часто задаваемый здесь вопрос о выборе фреймворка или написании чего-то своего с нуля на чистом php, неплохо сначала ознакомиться с принципами организации фреймворков, с задачами которые они решают; с паттернами проектирования на php; с лучшими практиками написания кода; изучить разбор частых архитектурных ошибок, которые допускают как новички, так и профессионалы; идеально было бы вообще подробно расписанное сравнение внутреннего устройства нескольких фреймворков, с обсуждением плюсов и минусов той или иной реализации и т.д.
Есть такая информация?
  • Вопрос задан
  • 5856 просмотров
Пригласить эксперта
Ответы на вопрос 3
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
В целом сразу вас расстрою, то что вы хотите нельзя "разобрать" за пару месяцев. На это уйдет пару тройку лет. И книги которые стоит по этой теме прочитать имеет смысл перечитывать. Ну и практика практика практика.

Так же хочу заметить что "архитектура" это не что-то эдакое, а общее понимание команды разработчиков о том как функционирует приложение. Если этого общего понимания нет - у вас нет архитектуры. У многих разработчиков понимание пропадает уже через пару месяце стихийной разработки. Так что помимо архитектуры важно еще и процессы/методологии разработки подтянуть.

Так же стоит заметить, что все это приследует одну единственную цель - сделать процесс разработки эффективным в краткосрочной и долгосрочной перспективе. Если скажем у вас все приложение построено на процедурах и глобальных переменных поддержка такого кода скорее всего будет сильно дороже.

но совершенно не имею представления о правильной архитектуре приложений на php


"Правильно" не бывает, все зависит от задачи. "Правильная" архитектура является:

- понятной - то есть можно быстро разобраться. Это как читабельность кода (читать совершенный код Макконела) так и в принципе декомпозиция системы, разделение ответственности и т.д. (микросервисы, гексагональная архитектура). Тут можно посоветовать почитать Эрика Эванса.
- удобной в изменениях (продумать все нереально, а сталобыть проще сделать так что бы адаптироваться под изменения в требованиях можно было эффективнее).
- Тестируемой - то есть вы можете проверить работоспособность системы на различных уровнях. Тут стоит смотреть в сторону TDD или практик с той же идеей (сначала формулируем как работает и как мы это проверим а потом уже делаем).

Вот и все. Далее уже есть принципы SOLID (читать Роберта Мартина), GRASP (Крэйг Ларман), GoF (лучше тут почитать head first design patterns или даже начать с Мэта Зандстры, у него помимо паттернов еще про процессы мельком рассказано).

Ну и смысла в этом всем нет если вы еще до конца не осознали что есть инкапсуляция и полиморфизм. Многие могут рассказать что значат эти термины, но на практике эти знания они не могут применить (чаще всего страдает инкапсуляция)

или написании чего-то своего с нуля на чистом php


Такое решение может принимать только разработчик у которого уже есть за плечами хотя бы пяток лет опыта работы с различными (не одним) фреймворком и языками. В противном случае вы только будете заниматься бесполезным велосипедостроительством.

идеально было бы вообще подробно расписанное сравнение внутреннего устройства нескольких фреймворков


Берете Symfony или Zend и вперед. Все остальные фреймворки "проще". То есть скрывают больше от разработчика. После них уже можно брать что угодно.

p.s. еще прочитайте тут: www.phptherightway.com
Ответ написан
@Jazzist
  1. Мартин Фаулер "Рефакторинг"
  2. Боб Мартин "Чистый код"
  3. Про паттерны проектирования в википедии, на форумах и на узких форумах
  4. "Приемы объектно-ориентированного проектирования. Паттерны проектирования" Авторы: Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес


За месяц-два реально разобраться и применять. Если практикуете - то быстрее.
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Проблема в том, что сам язык я знаю, но совершенно не имею представления о правильной архитектуре приложений на php.
Касательно веб-сайта: базовая архитектура и все этапы разработки: https://sitecoder.blogspot.ru/p/blog-page_23.html
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы