. */ declare(strict_types=1); namespace App\Services\InfoProviderSystem\DTOs; /** * This DTO represents a purchase information for a part (supplier name, order number and prices). */ class PurchaseInfoDTO { public function __construct( public readonly string $distributor_name, public readonly string $order_number, /** @var PriceDTO[] */ public readonly array $prices, /** @var string|null An url to the product page of the vendor */ public readonly ?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'); } } } }