dataMap = new DataMap(); $mustExist = $article === null; return $this->cu->exec(Bind::attrs($httpData)->toAttrs($this->dataMap) ->dynProp('categoryName', $mustExist, Mappers::cleanString(true), Validators::enum( ['international', 'national', 'sport'])) ->dynProp('text', $mustExist, Mappers::cleanString(true, maxlength: 9999) ) ->dynProp('title', $mustExist, Mappers::cleanString(true, minlength: 3, maxlength: 255))); } function out(Article $article): Article { $this->cu->exec(Bind::attrs($this->dataMap)->toObj($article) ->optProp('categoryName', Validators::enum(['international', 'national', 'sport']), Mappers::valueClosure(function ($categoryNameStr) { return CategoryName::tryFrom($categoryNameStr); })) ->optProp('text', Mappers::cleanString(true, maxlength: 9999) ) ->optProp('title', Mappers::cleanString(true, minlength: 3, maxlength: 255))); return $article; } }