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