@symfony_php

Страница 428 из 1418
Sergey
30.11.2017
18:40:34
более того, ты так или иначе контроилруешь типы когда данные внутрь объекта попадают

например - через конструктор

а наружу их зачем выпускать?

Sasha
30.11.2017
18:40:50
а еще есть проперти без сеттеров

Google
Pavel
30.11.2017
18:40:53
вот дата классы бы...
А что под дата-классами имеется ввиду?

Sergey
30.11.2017
18:41:00
и как в java9 походу будет

а еще есть проперти без сеттеров
публичные называются)

Aleserche
30.11.2017
18:41:26
А что выпускать? Проперти? Они же не RO

Sergey
30.11.2017
18:41:34
вот тут выше скинули ссылку про primitive obsession.

Sasha
30.11.2017
18:41:41
id например

Sergey
30.11.2017
18:41:41
еще можно почитать про anemic model

А что выпускать? Проперти? Они же не RO
приведи пример ситуации когда тебе нужны геттеры и сеттеры, что-нибудь небольшое

операция какая-нибудь

Aleserche
30.11.2017
18:43:32
Сходу хотел про uuid загнуть, но это немного не то

Вот так всегда, когда дело доходит до примеров, все становится печально

Sergey
30.11.2017
18:47:54
1. дженерики 2. тайпхинтинг для пропертей 3. тайп элиасы 4. пайп оператор 5. JIT
а потом перейти просто на котлин) там 1.2 релизнулся пару дней назад

Google
Aleserche
30.11.2017
18:48:00
Давай так, у нас есть объект, которым мы обмениваемся с какой-нибудь системой. В него нужно что-то записывать, а потом считывать. Пусть это будет пакет, который хранит id, body и еще что-нибудь

Alan
30.11.2017
18:51:39
наверное надо добавить больше инфы о том какое у него поведение иначе это массив)

Pavel
30.11.2017
18:53:08
За 1 день собрал то что мне нужно, ди, консоль, пср7, и тд
О чем речь. В симфони просто хорошие компоненты + отличная синергия между ними.

Sergey
30.11.2017
18:53:23
Давай так, у нас есть объект, которым мы обмениваемся с какой-нибудь системой. В него нужно что-то записывать, а потом считывать. Пусть это будет пакет, который хранит id, body и еще что-нибудь
если это объект которым мы обмениваемся - он должен быть имутабельным (во всяком случае мы не должны его в процессе менять). Так что тут сойдут и публичные свойства. И это идеальный кейс для дата классов (которых нет в php)

Big_Shark
30.11.2017
18:54:41
О чем речь. В симфони просто хорошие компоненты + отличная синергия между ними.
В симфони куча косяков, один из которых их любовь в yml)

Pavel
30.11.2017
18:55:23
В симфони куча косяков, один из которых их любовь в yml)
Ну вот добавили php dsl для контейнера и роутинга, жить можно :)

Sergey
30.11.2017
18:55:33
можно поставить в phpdoc @readonly и натравить статический анализатор

https://github.com/phpstan/phpstan/blob/master/tests/PHPStan/Rules/Properties/data/writing-to-read-only-properties.php

Alan
30.11.2017
18:57:53
можно поставить в phpdoc @readonly и натравить статический анализатор
а чем хороши публичные свойства? ведь может потом понадобиться еще и дату хранить - когда пароль поменяли последний раз

Sergey
30.11.2017
18:58:19
почему у людей сразу "если нет геттера - значит есть публичные свойства"

Pavel
30.11.2017
18:58:36
Можно линк?
https://github.com/symfony/symfony/pull/24180 https://github.com/symfony/symfony/pull/23834

Aleserche
30.11.2017
18:59:11
Действительно, если можно просто __toString

Alan
30.11.2017
18:59:11
так, про публичные в иммутабельном ты же сам написал)

Google
Big_Shark
30.11.2017
18:59:24
https://github.com/symfony/symfony/pull/24180 https://github.com/symfony/symfony/pull/23834
Спасибо, в доке не видел, интересно почему по дефолту юмл

Sergey
30.11.2017
18:59:32
Действительно, если можно просто __toString
откуда у тебя взялся tostring - если для тебя важно только как сущность в шаблон запихнуть - ну ладно)

я предложил тебе задачку

попробуй решить ее без геттеров и сеттеров

тебе тут не нужен UI

нет базы данных

только php

Aleserche
30.11.2017
19:00:14
А что разрешить-то?

Pavel
30.11.2017
19:00:17
Спасибо, в доке не видел, интересно почему по дефолту юмл
видно просто еще не вся конфигурация готова. Есть же просто конфиги

Aleserche
30.11.2017
19:00:30
Ну т.е. какой апи должен быть?

Sergey
30.11.2017
19:00:49
А что разрешить-то?
у тебя есть класс User, в котором надо сделать возможность смены пароля. Для смены надо предоставить старый, и если он не ок - кинуть исключение

Ну т.е. какой апи должен быть?
вот а как ты до этого подобное делал?

Sergey
30.11.2017
19:01:24
у тебя вот был setPassword и getPassword

потом какой-нибудь UserManager

Sergey
30.11.2017
19:01:50
Aleserche
30.11.2017
19:01:58
Sergey
30.11.2017
19:02:25
добавляем новое требование - запрещено юзать пароль который ты уже юзал (например проверять последние 10 паролей)

тебе надо для этого геттеры и сеттеры при таком подходе?

короч ложить поведение рядом с данными. Ну то есть ООП делать

Google
Aleserche
30.11.2017
19:03:15
Держать стек внутри и чекать?

Sergey
30.11.2017
19:03:22
геттеры для UI в отсутствии альтернатив (view model) - ну тут уж ничего не поделать. Но это вообще как по мне смешивание ответственности

обработка и вывод данных

Aleserche
30.11.2017
19:05:26
Если подумать, то у меня геттеры в основном для шаблонов. Меня больше беспокоит как быть с жирными конструкторами. Скорее из-за них начинаешь городить сеттеры

Sergey
30.11.2017
19:05:44
жирные конструкторы - маленькая проблема. Ну и есть билдеры

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

есть DTO

Admin
ERROR: S client not available

Sergey
30.11.2017
19:06:04
много чего есть

надо только захотеть

Aleserche
30.11.2017
19:07:38
В каком-то яп в момент создания объекта создаются виртуальные сеттеры из параметров, которые указаны в конструкторе. После создание объекта, сеттеры закрываются

Если нужно обработать данные из этих сеттеров, то на них нужно просто подписаться

Big_Shark
30.11.2017
19:13:03
https://github.com/symfony/symfony/projects/6#card-4422613 интересно

Судя по всему yml будут вырезать

Ну точней максимально вырезать

Alan
30.11.2017
19:14:03
про анемичное... а если у меня есть коробка в которой много предметов разной стоимости, и нужно чтоб выпал один из них - выигрыш, а шансы на предметы в коробке считаются от их стоимости. делаем $box->getDrop() а что делать когда шансы вдруг станут обсчитываться сторонним сервисом через api? можно не выносить это в отдельный сервис? потом появятся разные другие коробки у которых шансы будут обсчитываться еще парой разных способов

Alan
30.11.2017
19:20:32
коробка может - предметы в ней

Google
Sergey
30.11.2017
19:20:50
коробке в целом пофиг что за предметы - так?

это считай просто коллекция

ей важна только стоимость что бы построить распределение, так?

Alan
30.11.2017
19:21:11
да пофиг

Sergey
30.11.2017
19:21:26
не, когда пофиг это менеджеры и анемичные модели)

Alan
30.11.2017
19:22:04
ну хорошо следующий шаг - не пофиг, коробке важно что у нас в наличии есть, а это лежит где то в другом апи (остатки)

Sergey
30.11.2017
19:22:19
короч опиши задачу нормально

Alan
30.11.2017
19:22:36
ну предметы в ней - для витрины чтобы показать

а реально доставить можем только то что в наличии на складе

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

но показываем все - и то чего сейчас у нас нет

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

Sergey
30.11.2017
19:28:56
но показываем все - и то чего сейчас у нас нет
и в лотерее учавствует то чего нет?)

Alan
30.11.2017
19:30:37
и в лотерее учавствует то чего нет?)
да, что то дорогое чего в наличии изначально было мало - привлекает, но быстро кончается на складе. дорогое мы всеравно показываем до лотереи а выдаём что осталось

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

Sergey
30.11.2017
19:57:23
еще пара вопросов которые я бы задал составителю требований: - что значит "показываем до лотереи"? Что-то типа рассылки? - Что будет если нам выпал товар, которого 1 единица на складе, и пока мы его выбирали лотереей кто-то его уже купил? На каком этапе должна происхоидть резервация товаров? Система резервации товаров наша или внешняя?

Alan
30.11.2017
20:05:54
> - что значит "показываем до лотереи"? Что-то типа рассылки? показываем на странице коробки - ее содержимое, все что может выпасть и могло бы, если бы было в наличии, пользователь об остатках и наличии не знает. запускает лотерею - получает выигрыш > Что будет если нам выпал товар, которого 1 единица на складе, и пока мы его выбирали лотереей кто-то его уже купил? На каком этапе должна происхоидть резервация товаров? Система резервации товаров наша или внешняя? резервации нет, если так уж случилось что предмет в наличии 1 а выпал 5 игрокам то получает тот кто первый нажмет - ЗАБРАТЬ, остальные увидят статус - доставка, когда предмет докупят и он появится - будет переотправка и пользователь его получит. то есть подождать свой выигрыш если он кончился - норм, но мы стараемся избежать этого

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

Big_Shark
30.11.2017
20:35:43
Дока у симфони меняется прям налету )

Антон
30.11.2017
20:39:48
ranbox напоминает

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