«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
Аноним 2018/10/31 05:53:02  №1287383 1
Вкатился в PHP, и обнаружил, что отсутствуют хорошие рекомендации по построению правильных архитектур backend'a, так как каждый видит со своей кучи навоза (как и в js на frontend'e). Значит какой напишешь в силу своего видения говнокод - так и будет работать. Мой всё правильно понимается или всё же в чём-то заблуждаюсь?
Поясните, пожалуйста... Желательно ссылками и примерами, по возможности
Ответы: >>1287875
Аноним 2018/10/31 20:43:26  №1287875 2
>>1287383
Заблуждаешься
Да, каких-то четких рекомендаций тут нет, но в целом архитектура бекенда устоялась.
Всегда есть роутер, есть реквест, а иногда и ответ (мало где, в основном везде свои велосипеды с глюками), есть конфиг (тут пожалуй больше всего велосипедов), есть ядро, есть контроллер, есть кэш, иногда контейнер зависимостей (довольно редко на самом деле), и конечно же какой-нибудь недо-orm.

По большей части современные сайты - это фронт-контроллер, потому что везде маршрутизация и танцы с ЧПУ.
Но некоторые и тут изобретают велосипеды, подключая ядро в каждом (!), каждом, сука, файле, и это пиздец.

Обязательно юзай шаблонизаторы, и лучше twig мир еще ничего не придумал
Шаблонизаторы нужны не столько для удобного натягивания шаблонов, сколько для того, чтобы отделить мух от котлет код от верстки
Плюсы twig - посмотри как аккуратно он обрабатывает ошибки буферизации, и сравни это с битриксом, который от любого чиха путает буферы и рвет верстку нахуй

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

И без ООП, конечно, никакой толковой архитектуры не выйдет, как ни крути
А с ООП забываешь про include-ад, и просто юзаешь автозагрузчики

Юзай инверсию зависимостей, и другие умные слова, иначе выходит хуета и боль
Потыкавшись с голым ООП тоже быстро дошел до всей этой шелухи - без неё у тебя будет пиздец в ядре, и код будет очень страшный и ограниченный. С ней можешь творить магию - тебе уже плевать кто как реализован, везде указываешь абстракции.
Очень быстро доходишь до простой истины: сначала описываешь общие абстракции, потом уточняешь их, накладываешь ограничения, потом реализуешь. Если делать иначе - очень быстро упрешься в ограничения, они будут просто везде, и решить их можно только костылями, что полностью уничтожает твою архитектуру: код работает хуй пойми как, и при любом изменении ждешь кучи трудноуловимых ошибок хз где, предсказать поведение кода ты уже не в силах

И конечно стоит подумать о тестах. Подумать, потому что на практике нигде не видел, чтобы их использовали. Зато почти все публичные модули идут с тестами.
Идея заманчивая, но начать её использовать не так просто - кажется, что оверхед будет слишком большой, хотя на деле оно наоборот, экономит время: на тестах ты быстро формализуешь задачу, быстро натыкаешься на баги, и быстро приводишь код в соответствие с задачей, а без тестов ты быстро нахуевертишь гору кода, быстрее тестов, но потом потратишь в десять раз больше времени, ползая по коду, в попытках отловить непонятно откуда взявшиеся странные баги, потому что магия, мать её
Ответы: >>1287998
Аноним 2018/11/01 06:58:31  №1287998 3
>>1287875
Спасибо. Значит исходя из твоего ответа чистый PHP никому не нужен.
Однако мне нравится чистота без каких-либо фреймворков и сторонних библиотек.
Мне трудно представить трудно отслеживаемые баги, так как разработка кода процесс детерминированный.
ООП нужно только для энтерпрайза по моему личному опыту, поэтому предпочитаю ПОП, так как наиболее гибко.
Роутеры, контроллеры и прочее это разве не относится к MVC и MVVC, а если так, то действитетльно ли нужно это?
Алсо спасибо за мудрые рекомендации к последующему обдумыванию.
Ответы: >>1288010
Аноним 2018/11/01 07:19:38  №1288010 4
>>1287998
С чего это не нужен? Крупные проекты пишутся на нативном php. Любой фреймворк - это зависимость. Чем больше проект, тем больше проблем с зависимостями.
Сегодня в моде микросервисная архитектура. Использование шаблонов ООП в этой архитектуре зависит от ситуации. Последний проект, в котором я участвовал, был на микросервисах. У нас только в двух использовались шаблоны. И то, самые простые, типа фабрики.