*/ public $sorting; /** * @param int $productId * @param array $variation * @param Pagination $pagination * @param Sorting[] $sorting */ public function __construct(int $productId, array $variation, Pagination $pagination, array $sorting) { $this->productId = $productId; $this->variation = $variation; $this->pagination = $pagination; $this->sorting = $sorting; } public static function fromBody(array $body): GetUsersOfPopularItemRequest { $pagination = Pagination::fromBody($body['pagination'] ?? []); $pagination = $pagination->isValid() ? $pagination : null; $sorting = array_filter( array_map(function ($data) { $obj = Sorting::fromBody($data); return $obj->isValid() ? $obj : null; }, $body['sorting'] ?? []) ); return new GetUsersOfPopularItemRequest( $body['productId'] ?? null, $body['variation'] ?? null, $pagination, $sorting ); } }