@prophp7

Страница 1120 из 1387
Maksim
19.06.2018
14:19:22
клонирование - не самая дешёвая операция, но в контексте пхп на это можно хер просто положить)

Sergey
19.06.2018
14:19:31
а если объект большой? Копировать накладно
ну то есть твой кейс это когда меняется одно поле из сотни. У меня тут будет другой вопрос - почему там сотня полей, почему меняется только одно, оно всегда одно меяется (кроме как при создании)? может надо вынести в отдельную сущность?

ну короч там начинаются веселые пляски

p.s. все намного проще когда у тебя синхронно однопоточно и никогда нет конкуретных запросов)

Google
Pavel
19.06.2018
14:20:03
кто нибудь подключал asterisk ?это сложно?

Andrew
19.06.2018
14:22:27
кто нибудь подключал asterisk ?это сложно?
ну бля, тут интересная дискуссия, не мог подождать хотя бы, не говоря уже об оффтопе?

Bohdan
19.06.2018
14:23:30
@fes0r теперь я включусь: допустим, я хочу обязать все репозитории иметь два метода: save и delete (persist и remove, не суть важно) первая идея - два интерфейса под каждый метод но! в сигнатуре методов будет в лучшем случае object, а то и вообще никакого тайпхинта нарушение lsp наяву - require no more, promise no less не работает с одной стороны - дерьмо получается, с другой стороны - я не собираюсь использовать эти интерфейсы для автовайринга или подобного - просто контракт для репозиториев

че делать-то?

Maksim
19.06.2018
14:25:02
сейчас за delete в репозитории звездюлей получишь)

Bohdan
19.06.2018
14:25:10
delete вполне себе типизабельная штука, принимает конкретную сущность ведь флаш вот вынесу по примеру в отдельный сервис - лучше втянуть два сервиса, чем в каждой репе дублировать flush

Dmitry
19.06.2018
14:25:57
зачем глобальный интерфейс для репозитория... это как глобальный интерфейс для всех сервисов

Bohdan
19.06.2018
14:26:33
зачем глобальный интерфейс для репозитория... это как глобальный интерфейс для всех сервисов
контракт - я хочу знать, что мои репозитории умеют сохранять и удалять своих подопечных

тут вечный холивар на тему, может ли репозиторий в принципе иметь такой метод)
ну в принципе сюда можно подтянуть srp как аргумент против моего варианта... но хзхз пока что

Google
Bohdan
19.06.2018
14:27:38
выносить сохранение отдельно, удаление отдельно по полному srp - как-то эребор

Maksim
19.06.2018
14:27:51
лично в моей картине мира у репозитория такого метода нет

Bohdan
19.06.2018
14:28:02
а save у него есть?

а удаляешь ты через em?

Maksim
19.06.2018
14:28:17
через active=false)

сейва тоже нет) он умеет у меня ток искать)

Bohdan
19.06.2018
14:28:57
а персистишь новые сущности как?

Dmitry
19.06.2018
14:29:00
репозиторий разный на каждый случай, далеко не каждый репозиторий должен иметь тот же save о каком общем контракте может идти речь

Maksim
19.06.2018
14:29:20
а персистишь новые сущности как?
через em эт его головная боль

Bohdan
19.06.2018
14:29:51
я просто не хочу таскать его везде и не хочу развивать тему Сергея и делать Saver и Remover какие-нибудь

Dmitry
19.06.2018
14:29:55
но в общем если смотреть глобальнее, то ответ - никак, пока не будет дженериков

Bohdan
19.06.2018
14:29:56
хотя тоже стоит об этом подумать

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

Maksim
19.06.2018
14:30:46
ну хз. em - вполне се сервис. можешь его в свой инкапсулировать, запрятав раз и навсегда

Dmitry
19.06.2018
14:31:14
но для меня общий контракт для репозиториев звучит какой-то дичью... типа, подменить UserRepository на ProductRepository?

Maksim
19.06.2018
14:32:33
и, да, я с Дмитрием полностью согласен. Вне зависимости от конечной реализации, репозиторий - штука нихера не обязательно типизированная. Это нечто, что умеет "чёт делать" с конкретной сущностью для которой написано, имхо

Bohdan
19.06.2018
14:32:54
но для меня общий контракт для репозиториев звучит какой-то дичью... типа, подменить UserRepository на ProductRepository?
нетнет, я специально написал - не для подмен, чисто для обеспечения того, что у меня есть конкретный метод почему вообще задумался - на проекте умники успели наделать репозиториев как с методом save, так и с методом persist типа хотел сделать железный конвеншн

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

Google
Maksim
19.06.2018
14:33:43
разве сущность - не тип?
я, наверное, херово выразился. у тебя есть репозиторий, но схера ли он будет для всех один?

точнее, с 1м интерфейсом

Bohdan
19.06.2018
14:33:51
он не будет для всех один

и интерфейс у него не будет один

Maksim
19.06.2018
14:34:25
ну у тебя есть надцать репозиториев, каждый из которых имлиментит save и delete интерфейсы

Bohdan
19.06.2018
14:35:07
Dmitry
19.06.2018
14:35:40
ну вот делать интерфейс для этого как-то странно... тем более никто не запретит этот интерфейс не реализовывать

Bohdan
19.06.2018
14:36:33
ладно, спасибо, господа, подумаю еще над этим еще все же интересна аргументация о том, почему save/delete/flush (возможно) не место в репе если есть ссылочка или запрос в гугл - кидайте, почитаю

Maksim
19.06.2018
14:37:27
да тут раз в неделю стабильно срачи на тему сути репозитория) обычно всё сводится к тому, что он только ищет. Хотя отдельно взятые умные дядьки говорят, что это не всегда так)

Dmitry
19.06.2018
14:38:37
да тут все повернуты на ES и разделении read и write сущностей, какие тут вообще репозитории классические... не до них ;)

Maksim
19.06.2018
14:38:55
ну, да. разделение, все дела

Maksim
19.06.2018
14:39:49
даже не на read и write, а на command и query, скорее.

Bohdan
19.06.2018
14:41:49
ну, срачи я пропускаю, похоже cqs - не вижу конфликта с тем, чтобы держать save и delete в репе, кроме теоретического srp (уже не говорю про интерфейсы)

Maksim
19.06.2018
14:43:00
ну, с точки зрения буквоедства у тебя за запись и за запрос отвечают 2 разных интерфейса - подходит. но с точки зрения srp, уже чёт не то получается.

у тебя репозиторий внезапно становится вундервафлей, которая прям всё умеет

Bohdan
19.06.2018
14:50:49
Vitaly
19.06.2018
14:51:01
это Class Metadata у Фаулера?
Это вообще любые метаданные для orm, в данном случае аннотации. Но, как заметил @fes0r, всё же не стоит на это полагаться.

Admin
ERROR: S client not available

Google
Maksim
19.06.2018
14:51:04
моя нипанимать часть модных слов)

Bohdan
19.06.2018
14:51:38
консы?
недостатки типа pro's and con"s

Artem
19.06.2018
14:51:53
в общем я вроде понял, что возмущение сеттерами в данном случае вызвано плохой семантикой и протеканием инфраструктурных проверок в код предметной области =\

Maksim
19.06.2018
14:52:09
недостатки типа pro's and con"s
хз) я так не упарывался. У Фессора так бизнесс логика трактует. У него чуток ректальная схемка, смешанная

На сколько я понял, у него там es и традиционный подход. Вот и флашит отдельным сервисом. Эт лучше у него уточнять

Artem
19.06.2018
14:54:01
Tex
19.06.2018
14:54:07
ладно, спасибо, господа, подумаю еще над этим еще все же интересна аргументация о том, почему save/delete/flush (возможно) не место в репе если есть ссылочка или запрос в гугл - кидайте, почитаю
ну, тут действительно крайне спорно. кому-то проще em юзать вообще. у нас save\delete в репе, потому что не хочется таскать везде em, он слишком много умеет. а delete потому что иногда всё таки удаляем, ну и он не во всех репах есть, только там где это надо. flush отдельным сервисом, который умеет только flush, потому что зачастую это надо делать отдельно и именно в значении "синкнуть с базой всё что мы тут наобновляли", т.е. я не могу придумать зачем это пихать в конкретный репозиторий (и если пихать, то в какой. в каждый?) а насчёт интерфейсов, поддержу мнение о том, что это скорее код конвеншен. который всё равно нужен, потому что заставлять юзать интерфейс всё равно придется.

Vitaly
19.06.2018
14:55:59
Sergey
19.06.2018
14:56:19
хз) я так не упарывался. У Фессора так бизнесс логика трактует. У него чуток ректальная схемка, смешанная
да, все так. Грязь и слезы. Вперемешку. Есть пара мест где криво границы агрегатов и там пруфовская сущность внутри доктриновской

Vitaly
19.06.2018
14:56:58
В каком смысле "полагаться не стоит"? Ещё где-то тогда проверять чтоли? о_О
В том смысле, что доктрина тебя не спасет, если имя будет больше 10 символов а в качестве бд будет мускуль с отключеным стрикт модом.

Artem
19.06.2018
15:01:43
Эм... Немного не понял о чем ты. Сеттеры - плохо, потому, что дают прямой доступ на запись в стейт сущности.
а в свою очередь прямой доступ на запись в стейт сущности плох тем, что в БЛ нет никакой записи в стейт сущности? Или ещё какие-то причины?

Vitaly
19.06.2018
15:06:55
а в свою очередь прямой доступ на запись в стейт сущности плох тем, что в БЛ нет никакой записи в стейт сущности? Или ещё какие-то причины?
Тем, что нарушается инкапсуляция. Кто-то или что-то извне может изменить стейт твоей сущности и результаты в таком случае могут быть непредсказуемые. Ну и вынос логики поведения из сущностей в сервисы считается антипаттерном у нормальных пацанов. https://martinfowler.com/bliki/AnemicDomainModel.html

Artem
19.06.2018
15:09:34
тогда нарушает ли метод rename инкапсуляцию? public functon rename ($newName) { $this->name = $newName; }

Vitaly
19.06.2018
15:19:59
тогда нарушает ли метод rename инкапсуляцию? public functon rename ($newName) { $this->name = $newName; }
Я имел ввиду инкапсуляцию поведения. Представь что-то более сложное, чем простое переименование объекта, метод который, например, изменяет несколько приватных свойств на основе какой-то бизнес логики.

Виталий
19.06.2018
17:53:39
Да, вечер добрый. Мини рекламку внутри коллектива этому чатику сделали.

Stanislav
19.06.2018
18:45:13
на экзамене по 1С сегодня получил первую за три года учебы в универе тройку, этим стоит гордиться?

Stanislav
19.06.2018
18:52:21
информационные системы логистики

Dmitry
19.06.2018
18:53:53
Не любите логистику?

Google
Stanislav
19.06.2018
19:00:20
логистика и 1с:предприятие понятия мало чем похожие на мой взгляд (хотя откуда мне знать). ну не вывел в СКД данные из регистра расчета, пусть и связал все справочники с документами, планами видов характеристик и планами видов расчета, с кем не бывает)

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

Bohdan
20.06.2018
06:37:15
поресерчил чуть про репозитории и save/delete в них к примеру: http://richarddingwall.name/2009/10/22/repositories-dont-have-save-methods/ если воспринимать репозиторий, как коллекцию - add/remove выглядят вполне логичными

Maksim
20.06.2018
06:41:28
Те ж сказали в чем смысл вчера)

Bohdan
20.06.2018
06:43:05
все равно пытаюсь докопаться до глубин правды)

Artemy
20.06.2018
07:12:05
есть такая ошибка, варинтов решения несколько. можно просто прописать в htaccess php_value memory_limit '64M' ? PHP Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 262144 bytes) in /var/www/%sitename etc%

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