Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Здравствуйте!
Через несколько дней я собираюсь начать разрабатывать сайт, который в будущем может обрастать все новым и новым функционалам. Проблема в том что я понятий не имею как грамотно проектировать такие сайты. Сначала я начал искать решение на хабре и нашел одну интересную статью. Эта статья мне очень понравилась (хоть я там и не все понял)), но к сожалению в laravel нету модулей или что то который может их заменить. Тогда я начал искать примеры крупных проектов на laravel в гитхабе, но так и не смог ничего найти.
Как же правильно спроектировать сайт чтобы в будущем не было проблем с масштабированием?
PS. На тостере мне посоветовали использовать пакеты которые добавляет возможность использование модулей, но я бы сперва хотел посмотреть варианты с использованием стандартных возможностей laravel
Не в сети
У меня 2 крупных проекта на ларе, проблем вообще никаких не возникало, работать одно удовольствие.
Что не хватает то можно прикрутить через композер
Кладите всё в отдельные контроллеры, базу проектируйте так, что бы она была расширяема. К примеру если статуса заказа пока всего два, сделайте отельную таблицу и тяните статусы оттуда и в основной базе пишите status_id а не текст статуса.
Так как потом появится задача дать добавлять/редактировать статусы из админки
Ну и не стоит бояться а надо брать и делать, по ходу выполнения вы сами поймёте что куда ложить.
Как только кусок кода повторяется 2 и более раза, в отдельный блок этот кусок и оттуда уже подключать.
Смело вперёд на ларавеле, в нём всё есть ...
Не в сети
во-первых, контроллеры можно разложить по разным неймспейсам соответственно их принадлежности к той или иной группе функционала сайта, также по папкам можно раскидать и виды для них. модели никуда раскидывать не надо – они общие для приложения. кроме того во-вторых значимые блоки функционала можно выносить из контроллеров в сервисы уровня приложения (это удобно и в плане тестирования, удобно и иметь возможность в девелоперской среде подменять реализации на заглушки – это если сервис зарегистрирован в сервис-контейнере через интерфейс). потом в ларавеле есть такая удобнейшая штука как Command Bus (начиная с 5.1 – Jobs), которая также даёт возможность выносить отдельные блоки кода в свои классы, что позволяет их рефакторить при возрастании сложности и объединять сходные по функционалу блоки и выносить код в базовые классы. плюс события – позволяют вынести реакции на отдельные события в жизни приложения в независимые обработчики и подключать/отключать их быстро и просто в одном месте, а также выносить обработку из хттп-запроса в очереди задач
собственно можно ещё много наверное написать и каждый пункт расписать на отдельную статью, другое дело, что статьи про это уже написаны, а суть того что я пытаюсь сказать – что даже без модулей ларавель предоставляет множество способов организации кода, при которых даже действительно навороченная бизнес-логика, чётко и аккуратно раскладывается по отдельным «полочкам» и перестаёт быть навороченной, а разработчик может всю сложность держать под контролем и легко вносить правки в те или иные элементы работы приложения
если у тебя внятное ТЗ, а не так что «ты сначала запрограммируешь а потом мы тебе скажем что поменять» (менять приходится в итоге всё), то работа с ларавелем движется споро и тебе остаётся сосредоточиться только на самом важном – на логике работы кода, сам ларавель от важной работы «не отвлекает». за то и любим
Не в сети
Страницы 1