• Как правильно спроектировать Laravel приложение с уклоном в enterprise?

    SowingSadness
    @SowingSadness
    Планируем начинать новый проект и хотелось бы организовать структуру с учётом лучших практик


    все ваши доводы в рамках разработки на Laravel решаемы, и топикстартера как раз интересует, как это сделать.


    Что-то не вижу вашего ответа от вас о том как решить. Даже проблематики не описали. Мне кажется, вы не обладаете знаниями и просто генерируете пустые байты.
  • Как правильно спроектировать Laravel приложение с уклоном в enterprise?

    SowingSadness
    @SowingSadness
    Влад Токарев:
    Это фасады - от них можно и стоит избавиться, это не работа со статическими методами объекта в прямом смысле.

    От роутинга тоже можно избавиться?
    От ActiveRecord (подключения к БД)?
    От Events?

    К чему этот пример, что это вообще за сайт.

    Нашёл типичный пример контроллера на laravel. Если у вас есть другой — приведите.

    Кто такое предлагает?

    Как вы предлагаете прозрачно внедрить RBAC в приложении на laravel? Какой подход предлагают авторы Фреймворка?
  • Как правильно спроектировать Laravel приложение с уклоном в enterprise?

    SowingSadness
    @SowingSadness
    В чем проблема?))

    В том что вы не понимаете что сложность кода на прямую зависит от связности кода. Чем ниже связность, тем сложнее поддержка и понимание кода.
    При сквозном глобальном DIC вы получаете слабо связную архитектуру. А как следствие, высокосложный код.

    Почитайте %FamousName% как нужно делать %Anything%. Давайте конкретней, что не так и почему это плохо))
    При получении чего-то из контейнера по строковому ключу, практически равнозначно использование глобальной переменной. Проблемы использования глобальных переменных, вы надеюсь знаете?

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

    Вы решили решать задачу пула воркеров через IoC контейнер? Вы в своём уме?

    Обычное SOA

    А теперь идите и почитайте что такое парадигма. SOA не парадигма. Она не задаёт правил организации кода.
  • Как правильно спроектировать Laravel приложение с уклоном в enterprise?

    SowingSadness
    @SowingSadness
    fpinger:
    Так и определитесь, возможно использование ActiveRecord в экшенах.

    Автор спрашивает про enterprise. Зачем вы начинаете приводить аргументы про блоги?
    ActiveRecord хорош только на маленьких приложениях и для новичков. Т.к. он очень прост для обучения. Но его поддержка при увеличении объёма кода растёт экспоненциально.

    Бизнес - это больше чем заполнение полей данными. Если вы не заметили, то топикстартер упомянул DDD.

    Вы вообще на что это пишите? Я вас спрашиваю, поверх чего создаются слои и для чего.

    А вот фреймвок Laravel сверху их организует и создаёт флов разработки,
    И в чём заключается этот "флоу"? Пока что я вижу статики и нет концепции как понижать сложность разработки.

    Но не интерпрайз. А теперь и биг дата, понимаешь.

    Я не понимаю что вы несёте. При чём тут big data? Это две разные области с разными требованиями к приложениям.

    Предварительная валидация данных - это не целостность данных

    Я не говорю про валидацию пользовательского ввода. Я говорю про проверку целостности данных с точки зрения бизнес-логики.

    Если БД построена не для интерпрайза

    Вы хоть раз принимали участие в большой разработке? Хотя бы 25+ программистов, разделённых по командам, каждый отвечает за свою часть приложения?

    Просто, все ваши ответы исходят из написания приложения объёмом блога или форума. И нет представления, что такое целостность данных.
  • Как правильно спроектировать Laravel приложение с уклоном в enterprise?

    SowingSadness
    @SowingSadness
    Влад Токарев: Вы не правильно оценили мой ответ. Я не пишу как правильно спроектировать на ххх. Я написал развернуто, почему нельзя писать на ларвел
  • Как правильно спроектировать Laravel приложение с уклоном в enterprise?

    SowingSadness
    @SowingSadness
    index0h: Почитайте у Фаулера как нужно делать dic. И да, нужно получать реализацию по интерфейсу. И вообще один сквозной dic через все приложение - плохо.

    По поводу парадигм. Какую предлагает symfony? )
  • Как правильно спроектировать Laravel приложение с уклоном в enterprise?

    SowingSadness
    @SowingSadness
    fpinger:
    Вообще-то работа с ActiveRecord в экшене возможна в простых приложениях

    Читайте вопрос автора.

    Для сложной бизнес логики создаются слои поверх.

    Поверх чего? Поверх ActiveRecord? Зачем он тогда нужен во фреймворке, если есть DataMapping?

    В Laravel используются отдельные компоненты Symfony

    Значит Larvel не написан на основе Symfony. А написан с использованием компонентов Symfony. Но, суть Фреймворка именно в предложении концепции программисту как строить своё приложение.

    Вопрос же целостности данных решать на уровне PHP не имеет смыла.

    Вы в какой нормально форме данные в БД храните. В 5 или 6?
    Я сомневаюсь, что хотя бы в 3.
    Так что решать проблему целостности данных, вы будете частично в приложении. И так делают 99% разработчиков. И User::save без UserAddInfo::save вызвать очень просто. И таких ошибок воз и маленькая тележка. А в Enterprise их будет ещё больше, потому что людей над ним работает огого.

    Эра быстрых прототипов закончилась, где то в 2012. Сейчас уже нужны комплексные решения.
  • Как правильно спроектировать Laravel приложение с уклоном в enterprise?

    SowingSadness
    @SowingSadness
    fpinger: про sf у меня же тоже написано :) Но я, не вижу что-то схожести.
    Может Larvel написан на основе sf 1?
    Про Eloquent - см раздел ActiveRecord
  • Как повысить уровень программирования?

    SowingSadness
    @SowingSadness
    Хабр чуть ли не полностью заселен теми, кто не понимают о чем говорят. MVC то осилить не могут
  • Как повысить уровень программирования?

    SowingSadness
    @SowingSadness
    Есть проблема. Абсолютное большинство программистов, которые знают про solid etc не правильно их понимают
  • Действительно ли Ruby сложнее PHP/Python? Если да, то почему?

    SowingSadness
    @SowingSadness
    Пума Тайланд:
    ну синтаксис руби куда более однозначный


    из вики:
    Ruby также унаследовал идеологию языка программирования Perl в части предоставления программисту возможностей достижения одного и того же результата несколькими различными способами
  • Действительно ли Ruby сложнее PHP/Python? Если да, то почему?

    SowingSadness
    @SowingSadness
    Более грамотно? Откуда эта отсебятина?
  • Яндекс кнопки поделиться?

    SowingSadness
    @SowingSadness
    Никто ничего не понял.
  • Django vs Flask? для новичка, и не совсем стандартных задач?

    SowingSadness
    @SowingSadness
    На 2 линии серверов тоже всё работает через nginx, потому что руки не дошли до нормального хранилища статики. Когда дойдут, то можно будет на 2 линии отказаться от nginx+uwsgi и оставлять только uwsgi и указывать, что бы он сидел на порту.
    [uwsgi]
    http = :8081

    вообще нужно смотреть документацию uwsgi там иногда переименовывают опции. Вот например processes и workers обозначают одно и тоже :)
  • Django vs Flask? для новичка, и не совсем стандартных задач?

    SowingSadness
    @SowingSadness
    Да, в многопоточном. В нашем случае по 4 процесса на инстанс. Несколько серверов. Все запросы идут через nginx на 1 линии серверов. Он же отдаёт статику.
  • Django vs Flask? для новичка, и не совсем стандартных задач?

    SowingSadness
    @SowingSadness
    p2mbot: использую uwsgi сервер. И запускаю через paste-deploy конфиг

    [uwsgi]
    socket = /var/www/uwsgi/backend.sock
    master = true
    
    uid = nginx
    gid = nginx
    
    processes = 4
    reload-on-exception =
    
    env = PYTHON_EGG_CACHE=/var/www/pyramid/tmp
    
    harakiri = 60
    harakiri-verbose = true
    limit-post = 5242880
    post-buffering = 8192
    
    daemonize = /var/www/logs/backend.uwsgi.log
    pidfile = /var/www/uwsgi/backend.pid
    
    max-requests = 1000
  • Отличая Symfony 2 и Yii?

    SowingSadness
    @SowingSadness Автор вопроса
    marenkov: ... аргументировано, на этом и закончим.
  • Отличая Symfony 2 и Yii?

    SowingSadness
    @SowingSadness Автор вопроса
    marenkov: Когда ваш сервис А доступен всем подряд, то в блоке, который доступен лишь при выполнения условия ИКС, вы можете столкнутся с тем, что там находится сервис А в состоянии, которое противоречит условию ИКС.
    И это одна из проблем.

    Про создание сервисов, где инициализация не простая, а зависит от других сервисов - отдельная песня. Кто-угодно может подменить состояние для своих нужд и вы это никак не контролируете.

    И вся проблема не в том, что кто-то со злым умыслом это сделал. А в том что он не видит область воздействия своих локальных действий. Что и есть самая большая проблема при использования глобальных переменных.

    Я, действительно опечален тем, что огромное количество программистов, уже с затуманенными мозгами книгами по паттернам и "модным" фреймворкам, не понимают какие задачи решает ООП и с помощью каких инструментов.
  • Отличая Symfony 2 и Yii?

    SowingSadness
    @SowingSadness Автор вопроса
    marenkov: и? Написали тоже самое что и я. Как вы оправдали этот подход к такому контейнеру?
  • Отличая Symfony 2 и Yii?

    SowingSadness
    @SowingSadness Автор вопроса
    marenkov: самая большая проблема глобальных переменных не в этом, а в том что ты не знаешь что там и в любой момент оно может измениться и ты это никаким образом не контролируешь.