. */ declare(strict_types=1); namespace App\Services\InfoProviderSystem\DTOs; /** * This DTO represents a purchase information for a part (supplier name, order number and prices). * @see \App\Tests\Services\InfoProviderSystem\DTOs\PurchaseInfoDTOTest */ readonly class PurchaseInfoDTO { public function __construct( public string $distributor_name, public string $order_number, /** @var PriceDTO[] */ public array $prices, /** @var string|null An url to the product page of the vendor */ public ?string $product_url = null, ) { //Ensure that the prices are PriceDTO instances foreach ($this->prices as $price) { if (!$price instanceof PriceDTO) { throw new \InvalidArgumentException('The prices array must only contain PriceDTO instances'); } } } }