Kirill
помню что там наконец актор появился
Kirill
ну типа отдельный объект, который аутентифицируется
Kirill
и от его имени происходят проверки на логин
Kirill
т.к. в подавляющем большинстве случаев обычно его смешивают с юзером
Kirill
Kirill
ну блин, ты же понимаешь что перечислять - это целый день можно потратить
Kirill
возьми ту же i18n, и покажи мне как в несте сделать выгрузку файлов интернационализации в формате xliff из crowdin
Дмитрий
Kirill
учитывая то, что в несте вообще i18n нету))) а всё что есть - это вообще внешние плагины для этого, написанные как получилось
Kirill
вот и получаем ответ, что нест может и прикольный, но он ближе к "микро"
Kirill
а местами та же ларка/джанго, только с видом сбоку
Дамир Хайбулин
Владимир
ходят слухи, что DDD - это единственно расово верный ООП
Ну если по разгонять, то ООП как раз про то, чтобы предметную область представлять в виде объектов и их взаимодействия
Инкапсуляция как раз про то, чтобы класс отвечал за свое состояние и всегда был валидный (ака рич модель)
Сокрытие и интерфейсы - разграничивают способы взаимодействия с оьъектов (ака юзкейсы к домену)
Kirill
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
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?
Aleksandr Khristenko
SK
Aleksandr Khristenko
Aleksandr Khristenko
свойства например
Если я определил объект только с полями, откуда там возьмутся свойства?
SK
SK
А в чем отличие структуры от объекта с полями?
Если говорить про конкретную разницу между объектом или классом и структурой, ну вообще в общем и целом, в Пыхе ты можешь просто написать, допустим, ну вот самый простой для тебя пример для понимания, ты можешь сделать класс какой-нибудь, сделать там поле и, скажем, присвоить сразу же этому полю значение 12. Так вот, твой класс будет объектом, а поле структурой
Aleksandr Khristenko
Если говорить про конкретную разницу между объектом или классом и структурой, ну вообще в общем и целом, в Пыхе ты можешь просто написать, допустим, ну вот самый простой для тебя пример для понимания, ты можешь сделать класс какой-нибудь, сделать там поле и, скажем, присвоить сразу же этому полю значение 12. Так вот, твой класс будет объектом, а поле структурой
Так, ладно, мне было интересно услышать ответ от человека, которому я задал вопрос.
Михаил
Что-то вы помоему не о том говорите
Структура данных это же массив, очередь, дерево итд. Это просто понятие для классификации объектов
Kirill
а, ну и конструктор есть
Kirill
ну т.е. класс - структура с доп.плюшками
Kirill
так же как свойство - это поле с доп.плюшками
Михаил
класс не может быть структурой
Михаил
а если мы говорим про прототипо-ориентированное программирование? Там нет классов, но есть структуры
Михаил
допустим js
Aleksandr Khristenko
Kirill
Михаил
вы оба утрируете, я говорю в разрезе прототипо-ориентированного программирования, такого как в js
SK
Михаил
Владимир
А в чем отличие структуры от объекта с полями?
В самом начале я упоминал структуры)
В пхп по одному месту
В шарпе, например, структура хранится на стеке, то есть значимый тип со всеми вытекающими, а объект - ссылочный тип
Владимир
Михаил
Или всё такие не в этом разница
Владимир
Владимир
Михаил
Но тема то про различие структуры и объекта
Михаил
Ответ должен быть абсолютным
Михаил
Если не можете дать такой ответ, значит или копаете не туда или разницы нет
Михаил
Просто разный способ попытки упаковки данных
Владимир
Чтобы дать абсолютный ответ - определитесь с терминами, а то как всегда
Один про "графы и массивы", другой про контекст языка (как в #, как в php, как в го) что где как называется
Михаил
Владимир
Я определился - так как сразу упомянул язык, про который говорил)
И в разрезе него и говорил)
Михаил
молодец
Михаил
Гугле как всегда шедеврален
На любое определение есть исключение
The Ant
Ответ должен быть абсолютным
Всегда вылезет умник и начнет доказывать что если структуру передать по ссылке, то она автоматом становится обьектом
Михаил
The Ant
Игнорируя семантические различия.
Структура это просто набор переменных и функции для работы с ней в одном скоупе. Тащемта все )
Михаил
Михаил
упс
The Ant
😂