Update DTO

2026-06-02 14:31:46 +05:00
parent 110161f033
commit 5ca3c0d24c

12
DTO.md

@@ -68,7 +68,7 @@ if (!$errors->count()) {
```
При таком сценарии firstName всегда должен быть устанолен, если мы хотим сделать его
обязательным при создании, но опциональным при обвлении, выход либо создать 2 `dto` `Createpayload` и `UpdatePayload`
обязательным при создании, но опциональным при обновлении, выход либо создать 2 `dto` `Createpayload` и `UpdatePayload`
или обойтись группами при валидации
```php
<?php
@@ -180,7 +180,7 @@ $partnerService->update($partner, $payload, ['firstName']) // мы устано
```
Несколько замечения, обычно их поля делают публичными, и избегают геттеров и сеттеров
Несколько замечаний, обычно их поля делают публичными, и избегают геттеров и сеттеров
это справедливо и тут но в пыхах более старших версий, где можно атрибутам класса
назначить тип. В нашем случае геттеры и сеттеры могут быть полезны при
десериализации из json, дефолтный сериализатор их использует
@@ -209,8 +209,8 @@ $partnerService->update($partner, $payload, ['firstName']) // мы устано
AbstractObjectNormalizer::DISABLE_TYPE_ENFORCEMENT => true,
]);
// в данном случае отработает сеттре, если его не будет то запишется
// строка. Nут уже если требуется проверка поможет пост валидация(запустить валидатор после десериализации)
// в данном случае отработает сеттер, если его не будет то запишется
// строка. Тут уже если требуется проверка поможет пост валидация(запустить валидатор после десериализации)
// или делать поле приватным от сделать геттер, что бы строго ограничить типы и словить эксепшен
class Payload {
@@ -268,6 +268,6 @@ class CloseLeadPartnerServiceTest extends KernelTestCase
> `WebTestCase` - тут доступен http клиент, делать запросы как из браузера, чекать роуты и выхлоп роутов (например чекнуть что все роуты наши выдают валидный json)
**p.s** почему не использовать обычный json, потому что никто кроме разраба, что писал этот код
не иммет представления что там должно быть в json, как именуются поля и приходится
**p.s** почему не использовать обычный json, потому что никто кроме разраба, кто писал этот код
не иммет представления, что там должно быть в json, как именуются поля и приходится
лезть в код и разбираться в чужом.