Kirill
помню что там наконец актор появился
Kirill
ну типа отдельный объект, который аутентифицируется
Kirill
и от его имени происходят проверки на логин
Kirill
т.к. в подавляющем большинстве случаев обычно его смешивают с юзером
Дмитрий
ну нест пытается, но пока очень далеко
а далеко по каким причинам? ну точнее если со стороны симфони зайти - что у симфы лучше?
Kirill
ну блин, ты же понимаешь что перечислять - это целый день можно потратить
Kirill
возьми ту же i18n, и покажи мне как в несте сделать выгрузку файлов интернационализации в формате xliff из crowdin
Дмитрий
Kirill
учитывая то, что в несте вообще i18n нету))) а всё что есть - это вообще внешние плагины для этого, написанные как получилось
Kirill
вот и получаем ответ, что нест может и прикольный, но он ближе к "микро"
Kirill
а местами та же ларка/джанго, только с видом сбоку
Владимир
ходят слухи, что DDD - это единственно расово верный ООП
Ну если по разгонять, то ООП как раз про то, чтобы предметную область представлять в виде объектов и их взаимодействия Инкапсуляция как раз про то, чтобы класс отвечал за свое состояние и всегда был валидный (ака рич модель) Сокрытие и интерфейсы - разграничивают способы взаимодействия с оьъектов (ака юзкейсы к домену)
Kirill
но это не "разгонять", а прописные истины, имхо)
Kirill
но на счёт инкапсуляции не согласен
Владимир
Kirill
ну точнее не совсем
Kirill
инкапсуляция - это про то, что класс должен предоставлять только то, что он обязан предоставлять по предметной области и не давать доступ к деталям реализации
Kirill
ибо так-то DTO не рич модель ни разу
Kirill
и по его предметной области он должен давать публичный доступ к своим данным
Владимир
В том же шарпе я бы для dto как раз таки использовал не объекты, а структуры
Владимир
Потому что они будут ближе к дто)
Kirill
но при этом реализация: final readonly class CreateUserRequestDTO { public function __construct( public string $name, public string $password, public string $email, ) {} } полностью соответствует всем критериям инкапсуляции
Владимир
Хотя.... Хз как там принято) Я на шарпе писал в универе только + тыкал для себя кор
Kirill
ибо предоставляет только то, что надо)
Kirill
В том же шарпе я бы для dto как раз таки использовал не объекты, а структуры
ну в пыхе нет структур, так что объекты с полями или свойствами
Kirill
хотя не, свойства нах в ДТО
Kirill
спорно
Kirill
ну разве что какие-нибудь DbC инварианты/прекондишены повесить
Kirill
ну разве что какие-нибудь DbC инварианты/прекондишены повесить
типа: final readonly class CreateUserRequestDTO { public function __construct( public string $name { set => $value ?: throw new \InvalidArgumentException( 'Name cannot be empty', ); }, public string $password { set => $value ?: throw new \InvalidArgumentException( 'Password cannot be empty', ); }, // etc... ) {} }
Kirill
хотя лучше наверное (читаемее по крайней мере, нежели свойства, да и для DbC ассерты каноничнее): final readonly class CreateUserRequestDTO { public function __construct( public string $name, public string $password, public string $email, ) { assert($name !== '', 'Name cannot be empty'); assert($password !== '', 'Password cannot be empty'); assert($email !== '', 'Email cannot be empty'); } }
#lest
php[.]net только у меня лежит с 502?
Kirill
php[.]net только у меня лежит с 502?
https://github.com/php/web-php/issues/1163
Aleksandr Khristenko
ну в пыхе нет структур, так что объекты с полями или свойствами
А в чем отличие структуры от объекта с полями?
Aleksandr Khristenko
SK
А что еще?
свойства например
Aleksandr Khristenko
свойства например
Если я определил объект только с полями, откуда там возьмутся свойства?
SK
А в чем отличие структуры от объекта с полями?
Если говорить про конкретную разницу между объектом или классом и структурой, ну вообще в общем и целом, в Пыхе ты можешь просто написать, допустим, ну вот самый простой для тебя пример для понимания, ты можешь сделать класс какой-нибудь, сделать там поле и, скажем, присвоить сразу же этому полю значение 12. Так вот, твой класс будет объектом, а поле структурой
Михаил
Что-то вы помоему не о том говорите Структура данных это же массив, очередь, дерево итд. Это просто понятие для классификации объектов
Kirill
А в чем отличие структуры от объекта с полями?
в возможности наследования, наличии методов, наличии интерфейса ну и недетерминированный порядок полей (но это не точно)
Kirill
а, ну и конструктор есть
Kirill
ну т.е. класс - структура с доп.плюшками
Kirill
так же как свойство - это поле с доп.плюшками
Михаил
класс не может быть структурой
Михаил
а если мы говорим про прототипо-ориентированное программирование? Там нет классов, но есть структуры
Михаил
допустим js
Aleksandr Khristenko
Михаил
вы оба утрируете, я говорю в разрезе прототипо-ориентированного программирования, такого как в js
Михаил
нет, это всё разные вещи
"нет" относится к чему?
Михаил
ну т.е. класс - структура с доп.плюшками
ну или нещастный го. Там вообще есть стуктура как отдельный токен. И без всякого класса работает наследие, инкапсуляция, есть методы-хуетоды
Владимир
А в чем отличие структуры от объекта с полями?
В самом начале я упоминал структуры) В пхп по одному месту В шарпе, например, структура хранится на стеке, то есть значимый тип со всеми вытекающими, а объект - ссылочный тип
Михаил
В самом начале я упоминал структуры) В пхп по одному месту В шарпе, например, структура хранится на стеке, то есть значимый тип со всеми вытекающими, а объект - ссылочный тип
а если в го есть структура. Она хранится на стеке, но при увеличенном расходе памяти на эту структуру (и там есть ещё какие-то правила) то она утикает в кучу Что получается она резко объектом становится
Михаил
Или всё такие не в этом разница
Михаил
Но тема то про различие структуры и объекта
Михаил
Ответ должен быть абсолютным
The Ant
как славно что в JS есть классы
Тока от них отказались, нафиг не нужны 😄
Михаил
Если не можете дать такой ответ, значит или копаете не туда или разницы нет
Михаил
Просто разный способ попытки упаковки данных
Владимир
Чтобы дать абсолютный ответ - определитесь с терминами, а то как всегда Один про "графы и массивы", другой про контекст языка (как в #, как в php, как в го) что где как называется
Владимир
Я определился - так как сразу упомянул язык, про который говорил) И в разрезе него и говорил)
Михаил
молодец
Михаил
Гугле как всегда шедеврален На любое определение есть исключение
The Ant
Ответ должен быть абсолютным
Всегда вылезет умник и начнет доказывать что если структуру передать по ссылке, то она автоматом становится обьектом
Михаил
Всегда вылезет умник и начнет доказывать что если структуру передать по ссылке, то она автоматом становится обьектом
ну или если утечёт в хип(если судить из ответов выше). Да, умников слишком много стало
The Ant
Игнорируя семантические различия. Структура это просто набор переменных и функции для работы с ней в одном скоупе. Тащемта все )
Михаил
упс
The Ant
😂