@symfony_php

Страница 638 из 1418
Sergey
13.02.2018
08:19:48
https://www.elastic.co/guide/en/elasticsearch/resiliency/current/index.html

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

всеравно "как у гугла" не получится

Google
Tex
13.02.2018
08:31:14
немного не понял формулировки. То есть у нас между "принял запрос" и "записал в базу" ничего особо нет? тогда да, десериализацию можно. Но практика показывает что люди очень любят в сущностях миксовать штуки которые можно было бы захэндлить просто с теми которые требуют пристального контроля
нет, действия есть, но они требуют только вот этой сущности. т.е. условно приходит на апи реквест с сущностью (или просто дтошкой, не суть важно), часть данных из неё отправляется в сторонние апи, ответ от этих апи примешивается к этой сущности, отправляется пара задач в очередь в какой-нибудь рэббит и подобное. т.е. как бы классическая бизнес-логика, но при этом из реквеста кроме сущности нам ничего не надо. зачем принимать реквест именно? в чём профит?

Sergey
13.02.2018
08:34:24
нет, действия есть, но они требуют только вот этой сущности. т.е. условно приходит на апи реквест с сущностью (или просто дтошкой, не суть важно), часть данных из неё отправляется в сторонние апи, ответ от этих апи примешивается к этой сущности, отправляется пара задач в очередь в какой-нибудь рэббит и подобное. т.е. как бы классическая бизнес-логика, но при этом из реквеста кроме сущности нам ничего не надо. зачем принимать реквест именно? в чём профит?
ну тут вопрос не в том принимать реквест или мэпить на что-то. Тут вопрос мэпить это на сущность или на DTO через десериализацию. В описанном тобой варианте я мэплю на DTO и принимаю ее на вход в контроллер. Причем до мэппинга я делаю валидацию самого запроса, что позволяет мне в последствии делать мэппинг не совсем 1:1

Sergey
13.02.2018
08:35:45
ну просто если у меня приходит строка а я ее в объект превращаю какой, или выборку из базы делаю - если валидировать уже результат мэппинга то выходит нифига не логичные ответы об ошибках данных запросов) предпочитаю производить валидацию максимально в начале.

Tex
13.02.2018
08:36:57
резонно. но выходит если мэппинг всегда 1 к 1, то получается +- тоже самое.

Sergey
13.02.2018
08:37:28
резонно. но выходит если мэппинг всегда 1 к 1, то получается +- тоже самое.
если 1:1 то да, примерно то же самое. в этом случае можешь валидировать DTO

ну а если у тебя запрос и табличка в базе 1:1 и между принял http запрос и записал в базу ничего нет (может проверка прав разве что) - то можно и на сущность

но последнее часто превращается в "а вот с двумя полями из 10-ти все не так просто"

или внезапно всплывает необходимость делать ревизии

как-то был проектик который на скорую руку так вот сделали - типа с jms serializer и прочей сатаной. Быстро, просто... проект сдали а через 2 года вдруг клиент поднакопил деньжат и решил допилить, и все эти JMS потом сильно боком вышли

Tex
13.02.2018
08:40:43
ну а если у тебя запрос и табличка в базе 1:1 и между принял http запрос и записал в базу ничего нет (может проверка прав разве что) - то можно и на сущность
ну, без DTO делаю, если сущность в любом случае будет сохраняться в базу as is. т.е. условно приходит некий огромный объект с кучей пользовательского ввода, он в тупую сохраняется, а потом из части его данных делаются какие-то дополнительные операции. т.е. когда есть уверенность, что DTO для этой сущности будет полностью эквивалентно и какой тогда смысл плодить классы и писать конвертеры.

Google
Sergey
13.02.2018
08:43:26
о, уже у которого человека в этом чате спрашиваю. что не так с jms?
основная проблема jms - сырость. Года 3 проект просто не развивался, баги не фиксились. Не знаю как сейчас. Ну и вторая проблема, в сравнении с тем же symfony/serializer - изменение данных, то есть если тебе надо данные впихнуть в имеющуся сущность тебе нельзя просто взять и дать нужный объект, тебе надо писать всякие листенеры и прочий булшит. Да и если тебе надо как-то "по особому" захэндлить десериализацию просто написать хэндлер для типа ты не сможешь. Ну то есть оно не сложно но почти всегда заканчивается тем что всплывает логика на ивентах.

короч очень негибкая штука, сделана втупую и имеет существенные ограничения по применению. Еще в 12-ом году люди на это указывали и пилили альтернативы, но как-то так сложилось что они не получили распространения.

Как реализовали в итоге? я переписывал стандартный симфони сериалайзер как то
не знаю зачем его переписывать. А реализовали очень просто - выкинули jms serializer)

оставили его только там где логика не нужна была

где-то две трети пришлось полностью переделать

Andrey
13.02.2018
08:45:41
Не было доктрины был соап с ораклом и редисом пришлось переписывать

Sergey
13.02.2018
08:45:54
symfony serializer отвечает за очень простую сферу дейтельности - принять данные на вход и выплюнуть на выход результат.

Tex
13.02.2018
08:46:21
основная проблема jms - сырость. Года 3 проект просто не развивался, баги не фиксились. Не знаю как сейчас. Ну и вторая проблема, в сравнении с тем же symfony/serializer - изменение данных, то есть если тебе надо данные впихнуть в имеющуся сущность тебе нельзя просто взять и дать нужный объект, тебе надо писать всякие листенеры и прочий булшит. Да и если тебе надо как-то "по особому" захэндлить десериализацию просто написать хэндлер для типа ты не сможешь. Ну то есть оно не сложно но почти всегда заканчивается тем что всплывает логика на ивентах.
ну сейчас видимо лучше, потому что указанных тобой проблем как-то не замечаю. хэндлер для конкретного класса и эвента вполне пишется, багов не замечено. основную проблему, которую для себя заметил, виртуальные свойства провоцируют людей вместо написания и использования дто обмазываться этими самыми виртуальными свойствами прям в сущностях.

Andrey
13.02.2018
08:47:36
Нет не правильно выразился, переписывался get_set normaliser и denormalizer там были еще какие то костыли в сущностях

Через компайлер подменялся класс и делалась вся магия трансформации

Sergey
13.02.2018
08:48:06
у меня была задумка для таких - сделать отдельный гидратор + кодогенератор который был из сущностей генерил DTO 1:1 тупо что бы можно было все UI специфичные штуки туда запихнуть ну и что бы эти сущности на UoW не влияли (ну и быстрее))

Andrey
13.02.2018
08:48:21
Было давно

Надо в код лезть, лень

ну так это другое дело)
Но нормализаторы и денормализаторы часть сериалайзера а значит все же переписывал сериалайзер :)

Google
Sergey
13.02.2018
08:49:36
Но нормализаторы и денормализаторы часть сериалайзера а значит все же переписывал сериалайзер :)
нет, ты просто реализовал свои нормалайзеры и денормалайзеры. Это то для чего симфони сериалайзер и создавался.

Andrey
13.02.2018
08:49:57
Ок :)

Sergey
13.02.2018
08:50:14
есть огромная разница, так как то что ты использовал - это родные extension points компонента. Вот если бы компонент не позволял тебе это сделать - тогда "переписывал"

без листенеров и как в symfony/serializer

Sergey
13.02.2018
08:54:07
$person = $serializer->deserialize($data, Person::class, 'xml', [ 'object_to_populate' => $person ]);

Tex
13.02.2018
09:01:07
$person = $serializer->deserialize($data, Person::class, 'xml', [ 'object_to_populate' => $person ]);
видимо нет, во всяком случае мы подобным не пользуемся, а сходу найти просто по доке\исходнику не могу.

Sergey
13.02.2018
09:02:25
видимо нет, во всяком случае мы подобным не пользуемся, а сходу найти просто по доке\исходнику не могу.
ну короч я не против подобных вещей - но считаю что сущности (которые бизнес сущности) должны оставаться неприкосновенными и данные туда должны приходить уже валидными.

p.s. если валидировать запрос а не результат мэппинга - то можно закрыть глаза на многое)

Artem
13.02.2018
09:23:10
$person = $serializer->deserialize($data, Person::class, 'xml', [ 'object_to_populate' => $person ]);
подтверждаю, что jms - это тупик. склоняю на транзит кастомера этого дела на ламповый symfony/serializer.

Maks
13.02.2018
09:47:35
Может кто подскажет как правильно настроить READ_WRITE cache mode в доктрине ?

Alan
13.02.2018
10:15:17
ну короч я не против подобных вещей - но считаю что сущности (которые бизнес сущности) должны оставаться неприкосновенными и данные туда должны приходить уже валидными.
это только валидация ввода? сами сущности еще могут себя валидировать и не давать создать их в невалидном состоянии? или в целом вся валидация уходит туда?

Ilshat
13.02.2018
10:21:28
Подскажите, плиз. Хочу где то указать, что такие то контроллеры имеют такой-то prefix в route. Думал прокатит как в джава сделать свой (родительский) контроллер, а там прописать у него базовый роут. Но не прокатило. Как лучше такое настраивать, чтобы в каждом файле не указывать полный путь Route?

Ilshat
13.02.2018
10:40:21
https://symfony.com/blog/new-in-symfony-4-1-prefix-imported-route-names
4.1 пока нет в стабильной ветке

Ilya
13.02.2018
10:47:03
4.1 пока нет в стабильной ветке
суть та же в routing.yml указывешь что-то типа(для 3.4 версии): route_name: resource: '@AppBundle/Resources/config/routing/routing/routesWithPrefix.yml' prefix: /prefix а в routesWithPrefix.yml перечисляешь свои контроллеры и экшены, они уже будут с префиксами

Ilshat
13.02.2018
10:48:42
суть та же в routing.yml указывешь что-то типа(для 3.4 версии): route_name: resource: '@AppBundle/Resources/config/routing/routing/routesWithPrefix.yml' prefix: /prefix а в routesWithPrefix.yml перечисляешь свои контроллеры и экшены, они уже будут с префиксами
ну так можно. только придется каждый контроллер ручками прописывать. я сейчас думаю как сгруппировано это делать. к примеру по типу контроллера определять и т.п.

или по namespace

Google
Sergey
13.02.2018
10:49:42
resource: "@App/Controller/MyController.php" prefix: "/my"

можно так

можно весь неймспейс зарегать

Ilshat
13.02.2018
10:50:22
resource: "@App/Controller/MyController.php" prefix: "/my"
и наследованные контроллеры тоже будут придерживаться придерживаться этих правил?

Admin
ERROR: S client not available

Sergey
13.02.2018
10:50:38
не уверен, не пользуюсь наследованием

Andrey
13.02.2018
10:57:20
Кто-то находил решение для отключения авто выравнивания в Configuration классах штормом?

Andrey
13.02.2018
10:58:49




Andrew
13.02.2018
11:19:09
кто-нибудь юзал arangodb?

Ruslan
13.02.2018
11:31:42
Тема ок, можно линк ?

Sergey
13.02.2018
11:46:02
кто-нибудь юзал arangodb?
пока нет но планирую сравнить ее с orientdb

Max
13.02.2018
11:54:33
кто-нибудь юзал arangodb?
смотря для чего? я игрался с графами, но не было каких-то специфических задач, чтобы сравнить с orientdb очень или той же монгой. скажу, что год назад не было нормально клиента для работы, максимум коннекшен и дальше все запросы руками

если будете что-то педалить, то посмотрите на актуальность и функциональность пакетов

Вадим
13.02.2018
13:26:17
@fes0r Захотел попробовать твой бандл, RequestObjects ... но у меня появилось 2 проблемы. 1. Почему-то при валидном реквесте выдает ошибку, что поля нет, хотя оно есть 2. Как сделать вывод "path" вместо [name] просто name? Почти все взял с примера https://gist.github.com/misterx/6a2cf4387b0f844e722922dc8780f067#file-request-json

Вадим
13.02.2018
13:57:43
https://github.com/fesor/request-objects/blob/master/README.md#handling-validation-errors
Я это сделал, https://gist.github.com/misterx/6a2cf4387b0f844e722922dc8780f067, но getPropertyPath вместо name возвращает [name], есть ли возможность от этого избавиться?

Andrey
13.02.2018
13:58:02
это парафия symfony/validator

Google
Вадим
13.02.2018
14:16:54
это парафия symfony/validator
Угу, это из-за Collection, но возможно кто-то юзал, и как-то это исправлял

Sergey
13.02.2018
15:38:35
Угу, это из-за Collection, но возможно кто-то юзал, и как-то это исправлял
ох, я как-то загонялся и конвертировал это дело в json pointer

но по факту профита от этого небыло

Marietta
13.02.2018
15:49:49
Привет гайз, вакансия на удаленку, Fullstack разработчик на долгосрочный проект #php #js #удаленка #фултайм ставка 80-100к Требования: Уметь кроссбраузерно верстать HTML5/CSS3, понимать XML; Знать и применять JavaScript (jQuery); Уметь работать с методом запросов AJAX, разбираться в JSON; Отлично знать минимум PHP5, но лучше PHP7; ООП - понимать, применять, любить; MySQL, PostgreSQL - Уметь создавать сложные запросы к БД, оптимизировать их, строить связи между таблицами; Понимать как работают ключи и индексы; Понимать MVC фреймворки. Опыт работы с Symfony 3 приветствуется; Базовые навыки администрирования UNIX-систем; Уметь правильно работать с репозиториями Git, SVN; Уметь писать тесты к коду, и использовать их; Условия: Удаленная работа над одним проектом (не клиентские проекты) Полный рабочий день, 8 часов, быть доступным для связи при необходимости в рабочее время (Скайп, тг, почта) Зп: 80-100к на руки, от опыта и возможностей @Mari_et

Борис
13.02.2018
15:50:26
/spam

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

Andrey
13.02.2018
15:52:07
А как репортить я тоже за дублировал :)

Админы должны просто удалить по идее

Вадим
13.02.2018
15:53:52
Sergey
13.02.2018
15:55:19
Админы должны просто удалить по идее
ну у нас тут вроде бы не банят вакансии...

Вадим
13.02.2018
15:55:23
но по факту профита от этого небыло
А как с фронтом решил проблему? По факту отправили поле с одним именем, а ошибку получили с другим. Или там какой-то костыль?

Sergey
13.02.2018
15:55:24
вообще это правило можно пересмотреть

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

Bohdan
13.02.2018
15:58:23
вообще это правило можно пересмотреть
имхо пусть постят, по по правилам в питоночате есть фикс список того, без чего вакансия будет удалена и да, эта вакансия вполне нормально выглядит

Страница 638 из 1418