BlackFox — PHP фреймворк для веб-сайтов и приложений

fixxxer

К.О.
Партнер клуба
Это билдер, он нужен скорее для парсера аннотаций и автомиграций (которые вообще зло), чем сам по себе. Ручками удобнее вот так
https://github.com/cycle/orm/blob/master/tests/ORM/MapperTest.php#L43

Вот его и давайте обсуждать.
А чего там обсуждать? Для простых сайтиков, где все укладывается в банальный CRUD, наверное, пойдет. Такое обсуждать совсем неинтересно. Когда будут проекты с действительно сложной бизнес-логикой - приходи.
 

Adelf

Administrator
Команда форума
Тот факт, что в итоге вся наша логика обернется банальными UPDATE запросами сильно мешает мышлению в правильном направлении...
Эвент сорсинг немного проясняет голову, но это мало кому нужная вещь :)
 

fixxxer

К.О.
Партнер клуба
но от этого же ничего не изменится
Зависит от того, как поставлена задача. Давай представим себе, что у нас интеграция с какой-нибудь тикеталкой для модераторов, и нам надо в нее добавить задание на модерацию.
 

WMix

герр M:)ller
Партнер клуба
PHP:
class User{
    private $id;
    private $name;
    private $renamed = false;
    public function wasRenamed(){
        return $this->renamed;
    }
    public function rename($name){
        $this->name = $name;
        $this->renamed = true;
    }
}

$user = $userMapper->read($user_id);
if($user->wasRenamed()){
    $taskMapper->create(new UserRenamedTask($user_id, $newName));
}
else{
    $user->rename($newName);
    $userMapper->update($user);
}
 
Последнее редактирование:

fixxxer

К.О.
Партнер клуба
Какой ужас. А теперь представим себе, что таких условий 40, да ещё и с пересечениями и комбинаторикой. Ну и типичный rest на update - с одним методом на всё.
 

WMix

герр M:)ller
Партнер клуба
@WMix к чему этот апофеоз анемичности?
интереснее как вы это напишите.
представим себе, что таких условий 40
если знать все 40, можно думать, так конь в вакууме, но как бы там нибыло есть 40 условий все 40 придется и тебе написать
Ну и типичный rest на update
а вот тут уже совсем не понятно, rest при чем?
 
Последнее редактирование:

fixxxer

К.О.
Партнер клуба
А я уже выше показал, как я это напишу. В том месте вообще ничего не изменится.
если знать все 40, можно думать, так конь в вакууме
А в том и цимес, что ты изначально не знаешь. Требования штука такая, они добавляются и меняются со временем. И типичная CRUD-ятина при этом неизбежно превращается в адскую лапшу с костылями.
 
Последнее редактирование:

WMix

герр M:)ller
Партнер клуба
я о том что crud никуда не денется, операции у базы такие, (если replace не учитывать), под REST ресурсом можно и имя пользователя представлять (не мешай http и db)
 

WMix

герр M:)ller
Партнер клуба
А в том и цимес, что ты изначально не знаешь. Требования штука такая, они добавляются и меняются со временем.
ну что тут поделаешь, разнесу в методы, в классы.. все по мере поступления проблем
 

WMix

герр M:)ller
Партнер клуба
Тот факт, что в итоге вся наша логика обернется банальными UPDATE запросами сильно мешает мышлению
ну как еще сохранять та? и у вас update к конечном итоге весь orm на этом (crud) заточен, а то о чем вы это просто дополнительно "лог изменений" писать
 

fixxxer

К.О.
Партнер клуба
Ладно, если за все это время не понял, значит, и так неплохо живется. Ну окей.

Только не надо называть это ООП, это чистая процедурщина.
 

WMix

герр M:)ller
Партнер клуба
кто там модер, вырежте это в новую тему, тут путь дальше про blackfox ,eltn
 

fixxxer

К.О.
Партнер клуба
С анемичными моделями - да, писал процедурно, не осознавая этого.

CQRS (а точнее, не сам CQRS, а введение Read Models) - это штука необязательная, конечно, но в реальной жизни с ограниченными вычислительными ресурсами без него тяжело. Если забыть про разделение Application и Storage на основе РСУБД, и пофантазировать, можно придумать и другие варианты, но к чему эти фантазии.
 
Последнее редактирование:

Reuniko

Новичок
Это билдер, он нужен скорее для парсера аннотаций и автомиграций (которые вообще зло), чем сам по себе. Ручками удобнее вот так
https://github.com/cycle/orm/blob/master/tests/ORM/MapperTest.php#L43
Автомиграции добро, если они выполнены качественно. Но мне в принципе уже понятно насколько наше мировоззрение разное.
По ссылке вижу вызов $this->makeTable куда-то в класс выше, реализацию не вижу.

А чего там обсуждать? Для простых сайтиков, где все укладывается в банальный CRUD, наверное, пойдет. Такое обсуждать совсем неинтересно. Когда будут проекты с действительно сложной бизнес-логикой - приходи.
Постом выше описан проект с бизнес-процессом космической сложности.

Проект попроще: https://gamra.ru/
Организаторы создают мероприятия с кучей полей и с анкетой, состоящей из любого количества вопросов, среди которых могут быть как прямые ответы, так и выбор из вариантов. Пользователи эти анкеты заполняют, подавая заявку на участие в мероприятии. Ну и статусы "На модерации", "Допущен", "Не допущен". Уведомления во все стороны. Все на Blackfox SCRUD, динамические требования, в лапшу не превратилось.
 
Последнее редактирование:
Сверху