@prophp7

Страница 1330 из 1387
Natalia
10.10.2018
09:07:38
(;¬_¬)
10.10.2018
09:08:17
наконец то избавимся от /** * @var Photo */
в одну же строчку можно

и глаза не вываливаются

Serega
10.10.2018
09:08:33
Приветствую из Одессы мамы! Предлагаю сделать встречу в Одессе в ноябре, познакомиться, пообщаться. Кто не в Одессе на день приехать можно. Интересно? Пишите в личку, если соберется хотя бы 5 человек, уже будет о чем поговорить.

Google
Dmitry
10.10.2018
10:47:17
кто-то хорошо в написании расширения варит?

в частности про ресурсы вопрос

dypa
10.10.2018
11:17:01
п.с. но на самом деле dbal - вполне сносный вариант
а сколько в команде человек? насколько разнороден их уровень?

Maksim
10.10.2018
11:18:07
а сколько в команде человек? насколько разнороден их уровень?
к чему вопрос? использование доктрины никак не зависит от размера команды. Ровно как и использование дбал. Ну а чем меньше уровень, тем больший мрак с доктриной творят. Что в общем-то ещё 1 повод хорошенько задуматься, стоит ли.

Sergey
10.10.2018
11:20:40
Но мне тоже интересно к чему был вопрос

dypa
10.10.2018
11:21:41
к чему вопрос? использование доктрины никак не зависит от размера команды. Ровно как и использование дбал. Ну а чем меньше уровень, тем больший мрак с доктриной творят. Что в общем-то ещё 1 повод хорошенько задуматься, стоит ли.
ты всегда на конкретные вопросы отвечаешь только общими фразами, которые ничего не значат. меня интересует частный случай когда используется dbal и какая при этом была команда

Natalia
10.10.2018
11:21:46
Может имена норм делать и не надо будет описание?)
Предпочитаю и имена, и комменты, пусть иногда они могут быть излишне

Maksim
10.10.2018
11:22:00
я до сих пор не могу понять суть этого конкретного вопроса

дбал используется тогда, когда нет нужды в использовании uow, а обмазываться голым pdo лениво. Просто, как сахар. размер команды? похеру. навыки? похеру

dypa
10.10.2018
11:24:14
да где там конкретный вопрос-то?
будешь продолжать отвечать вопросами на вопросы? ну ок - я в таком троллинге не принимаю участие

Maksim
10.10.2018
11:24:31
очень большая потеря. Мог бы просто спросить, который час, раз решил доколупаться :)

Google
Bohdan
10.10.2018
11:32:08
это просто разные инструменты

Sergey
10.10.2018
11:32:26
да и сами подходы могут сильно различаться

даже в пределах той же orm подходы уже могут отличаться значительно

но да - если в команде нет кого-то кто досканально знает доктрину я бы не доверил такой команде этот инструмент

а ты всегда только orm юзаешь? и для репортов? или иногда тоже используешь dbal?

dypa
10.10.2018
11:44:03
еще раз - нет никакой корреляции между размером команды и "юзать dbal вместо orm"
использование orm не запрещает использовать dbal если это требуется. мне интересен опыт человека который использовал только dbal/pdo в последние пару лет в команде разработчиков

Sergey
10.10.2018
11:44:27
еще пример когда ORM не нужен - когда у тебя нет связанных реляций. То есть все данные для операции хранятся в рамках одной таблицы (при помощи jsonb). Один агрегат - одна таблица

Maksim
10.10.2018
11:45:55
я не использовал ни dbal, ни pdo, использовал pg там, где не впихивался es. тем не менее, вариант с pg от варианта с тем же pdo не отличается ни чем. Размер команды, где я использовал нативные средства (читай, без доктрины) от 4х до 20 человек. Их навыки? от джуниоров, до синьоров.

но опять-таки, я связи не вижу...

в моей текущей картине почти весь контроль за жизненным циклом передан сагам. Поэтому всякие тонкие модели - в порядке вещей. Это не сущности в привычном понимании, просто access object, если можно так выразиться. И ORM в такой картине мира не впихивается аще никуда, ибо по сути роль uow выполняется средствами саг

если брать пример попроще, то самый распространённый - круд. Лень то и дело толкает взять сущность, впихнуть сериалайзер и пойти пить смузи. Если ты делаешь апи, то с вероятностью в 100500% orm тебе не нужна.

и пофиг сколько людей будет в команде.

dypa
10.10.2018
11:53:19
я не использовал ни dbal, ни pdo, использовал pg там, где не впихивался es. тем не менее, вариант с pg от варианта с тем же pdo не отличается ни чем. Размер команды, где я использовал нативные средства (читай, без доктрины) от 4х до 20 человек. Их навыки? от джуниоров, до синьоров.
вполне интересный опыт, а для crud операций появились ли какие либо хелперы при этом? как то решался вопрос стандартизации написания sql кода при этом? бывали ли у джунов проблемы? как вы реализовывали поиск (конкатенация запроса или ...)?

Bohdan
10.10.2018
11:54:53
ммм есть примеры? а то мне это кажется похоже на отчеты какието
это больше похоже на набор дешборд поверх набора сущностей что-то вроде crm, но не для клиентов, а для сущностей с немаленьким набором меняющихся данных (которые и отображаются на дешбордах)

Sergey
10.10.2018
11:55:07
> конкатенация запроса или ... шутки ради - любой квери билдер это увы и ах лишь конкатенация запросов. Причем иногда выгоднее делать конкатенацию подзапросами (аля SELECT * FROM (SELECT * FROM (SELECT id, name FROM ...) WHERE... ) WHERE ..

Maksim
10.10.2018
11:55:09
вполне интересный опыт, а для crud операций появились ли какие либо хелперы при этом? как то решался вопрос стандартизации написания sql кода при этом? бывали ли у джунов проблемы? как вы реализовывали поиск (конкатенация запроса или ...)?
ну в первое время клешнями sql писали. Потом прикрутил qb простенький. джуны в целом на моём текущем месте работе не вариант, поэтому они в контексте этого кейса не рассматриваются. с dbal джуны ок дружат, им даже проще.

Google
Maksim
10.10.2018
11:57:04
dypa
10.10.2018
11:58:04
ну в первое время клешнями sql писали. Потом прикрутил qb простенький. джуны в целом на моём текущем месте работе не вариант, поэтому они в контексте этого кейса не рассматриваются. с dbal джуны ок дружат, им даже проще.
у меня есть негативный опыт с джунами в плане использования плейсхолдеров в sql запросе - они все время пытаются использовать их неименноваными

Sergey
10.10.2018
11:58:31
у меня есть негативный опыт с джунами в плане использования плейсхолдеров в sql запросе - они все время пытаются использовать их неименноваными
именованных не бывает. doctrine/dbal например сверху навешивает мегапримитивный парсер запросов который косячит

ну и на счет негативный или позитивный опыт - все эти мелочи причесываются

Anton
10.10.2018
11:59:06
По-идее такое же решается через кастомизацию QB

Maksim
10.10.2018
11:59:06
именованных не бывает. doctrine/dbal например сверху навешивает мегапримитивный парсер запросов который косячит
pdo научился и именованные жрать) даже если отключить эмуляцию. на мускуле не проверял, но с посгрёй точно ок

Sergey
10.10.2018
11:59:53
По-идее такое же решается через кастомизацию QB
все так, под копотом оно просто может собирать индексы параметров и потом склеивать в нужном порядке. А можно кастылять что бы именованные были (но тогда если сложные запросы составляются надо следить за отсутствием конфликтов в именах, я не давно на такое напоролся)

да именно про это, используем ли SQL 92 и не используем VIEWs
а почему я могу не хотеть юзать вьюшки?

Maksim
10.10.2018
12:00:37
да именно про это, используем ли SQL 92 и не используем VIEWs
тут мне наплевать. Корректно работает и славно (под корректностью понимается оптимальность запроса). против вьюшек я ничего не имею

dypa
10.10.2018
12:01:05
а почему я могу не хотеть юзать вьюшки?
например view с union по нескольким таблицам может быть медленным

Sergey
10.10.2018
12:01:22
например view с union по нескольким таблицам может быть медленным
ну тогда значит это тебе не подходит, но причем тут факт юзать или не юзать

это все звучит как попытка формализовать все на свете что бы люди прекращали думать

dypa
10.10.2018
12:02:28
это все звучит как попытка формализовать все на свете что бы люди прекращали думать
просто интересно понять - принималось ли такое решение или нет (я sql 92 и views привел для примера), выше уже ответ был

Sergey
10.10.2018
12:02:43
я бы не стал подобных решений принимать.

потому что это тупо

у тебя есть postgresql - все, дальше юзай то что решает поставленную задачу эффективно и что бы поддерживать было удобно

только тригеры в базе низя, ну как нельзя, надо оч хорошо обосновать зачем

Google
Maksim
10.10.2018
12:03:49
у меня можно и триггеры, и хранимки... вопрос в том, на сколько оправдано

Sergey
10.10.2018
12:04:05
ну типа чаще всего это не оправдано, но да бывают исключения.

Maksim
10.10.2018
12:04:28
событийная модель, все дела) пинок от постгреса, например, бывает полезен :)

Sergey
10.10.2018
12:04:39
с джунами - можно просто их просить всякий раз как они чего делают - что бы обосновывали чем руководствовались при реализации. Таким образом ты и их заставлять думать и анализировать ситуацию будешь, и с ревью проще

Anton
10.10.2018
12:04:47
Я противник какой-либо неявной записи в БД. Т.е. хранимки ок, но только если они делают ряд сложных селектов (можно с использованием временных таблиц), не более.

Maksim
10.10.2018
12:06:28
я вот за всю свою карьеру с джунами особых проблем не испытывал. Да, бывали факапы и огорчения, но я б не сказал, что они прям такие дауны, что не могут без орм жить. Вовсе нет. главное качество - пытливый ум. И вот таких надо искать) тогда они не будут по каждой строчке тебе мозг полоскать, а втянутся довольно резво

наоборот, орм - серьёзно срёт им в голову и тормозит развитие.

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

Dmitry
10.10.2018
12:15:58
Привет. Давно я не писал ничего тут ? Насчёт Doctrine. Не признаю маппинг анотациями. Пишу чистую доменная модель, которая не знает о деталях хранилища абсолютно ничего. В доменной модели есть только интерфейсы репозиториев с ЯВНЫМИ методами для персистенции. На инфраструктурном уровне пишу XML схемы маппинга доменных сущностей + реализовываю интерфейсы репозиториев, которые используют Doctrine.

Насчёт того, что ORM срёт в голову – да, и это касается любой ORM: что Doctrine, что любого AR. Чтобы дошло, предлагаю домен на три сущности и даю задание написать персистенцию руками без какой-либо ORM/DBAL: гидрации руками, запросы руками, чистый PDO. Обычно хорошо помогает понять, чего стоит магия.

Maksim
10.10.2018
12:17:06
я не разделяю фанатизма по выпиливанию аннотаций. В моей картине мира - чушь)

Dmitry
10.10.2018
12:26:22
1. Явные – не надеюсь на то, что будет UoW который потом что-то сам посохраняет (или нет). Обычно есть add() который только создаёт новые и persist(), которые апдейтит. 2. Зависит. Если репозиторий простой – один. Если разухабистый – делаю несколько. 3. Хотелось бы после обработки всего HTTP запроса, но иногда делаю и в процессе обработки, если требуется

Bohdan
10.10.2018
12:28:34
> persist(), которые апдейтит вне зависимости от того, откуда взял сущность, дергаешь persist?

Sergey
10.10.2018
12:29:07
1. Явные – не надеюсь на то, что будет UoW который потом что-то сам посохраняет (или нет). Обычно есть add() который только создаёт новые и persist(), которые апдейтит. 2. Зависит. Если репозиторий простой – один. Если разухабистый – делаю несколько. 3. Хотелось бы после обработки всего HTTP запроса, но иногда делаю и в процессе обработки, если требуется
1. то есть ты игнорируешь UoW и Identity map, а твой persist делает бесполезный $em->persist($entity) так? То есть у тебя не репозиторий а скорее table gateway. 2. Если ты не дробишь интерфейс - то тогда вопрос, зачем ты вообще его делаешь. Ты планируешь разные реализации репозитория? Или это следствие того что у тебя разделение на слои влияет на структуру модуля? 3. вот эти иногда - оч сомнительные штуки

> persist(), которые апдейтит вне зависимости от того, откуда взял сущность, дергаешь persist?
у меня обычно подобное ассоциируется с "не прочитал доку к доктрине"

Sergey
10.10.2018
12:30:17
все такими были

Google
Bohdan
10.10.2018
12:30:25
а потом чатик, искра, буря, осознание

Maksim
10.10.2018
12:35:05
все такими были
кстати, а ты как называешь штуки, которые на запись?)

ну, мол, если репозиторий ток на чтение, то как называется херовина на запись?)

Dmitry
10.10.2018
12:36:14
Угу, с Doctrine работаю немного, потому могу не осознавать, где ошибаюсь ? Буду рад, если услышу что-то новое для себя! 1. Да 2. Домен используется в разных сервисах приложения, реализация репозитория отличается. В части сервисов нужен ограниченный набор возможностей репозитория, потому разделяю 3. Иногда – например в неудачных местах архитектуры где flush нужен для того, чтобы дёрнуть внешний сервис (считай RPC), которому нужны данные, которые я создал в процессе обработки запроса

Sergey
10.10.2018
12:41:20
persist это не о сохранении, это о том чтобы UoW узнал о твоем обьекте. уже насмотрелись такого $obj = $repo->find(1); $em->persist($obj); $em->flush($obj);

Dmitry
10.10.2018
12:47:39
Да, я это понимаю. Но я умышленно не хочу привязываться к UoW, потому в интерфейсе делаю метод persist(), который делает на первый взгляд бесполезный ->persist(), но остаётся в интерфейсе для реализации в сервисах, которые могут не пользоваться (и не пользуются) Doctrine

Артём
10.10.2018
12:47:47
Так можно сделать сервис в слое приложения отвечающий за транзакции и использующий реализацию доктриновской сессии из слоя инфраструктуры. И забыть о прямых flush`ах

Sergey
10.10.2018
12:51:13
На чтение файндеры

Maksim
10.10.2018
12:52:01
Артём
10.10.2018
12:52:32
На чтение файндеры
А что ты называешь файндерами? Я просто привык немного к другой формулировке

Tex
10.10.2018
12:54:35
На чтение файндеры
файндеры - классы под чтение некоего набора сущностей\конкретной сущности с N методов или query functions?

Dmitry
10.10.2018
12:56:13
хм, я выношу некоторые поисковые вещи в отдельные интерфейсы, но не называю это файндерами

Shmaltorhbooks
10.10.2018
12:57:08
хм, господа, а как в phpDoc'е указать тип данных, которые возвращает генератор?

Shmaltorhbooks
10.10.2018
12:58:03
мерси)

Maksim
10.10.2018
12:58:30
Но шторму всё равно насрать)

Shmaltorhbooks
10.10.2018
12:58:39
бля)))

так нечестно)

а как, чтоб не насрать?

Страница 1330 из 1387