<?php
Class Product
{
public int $product_id;
public function __construct($product_id)
{
$this->product_id = $product_id;
}
public function getDetail()
{
// Здесь запрос к API который возвращает JSON с информацией о товаре.
}
public function getTitle()
{
$detail = $this->getDetail();
return $detail['data']['title'];
}
public function getPrice()
{
$detail = $this->getDetail();
return $detail['data']['price'];
}
}
private function getDetail()
{
if (!$this->detailCache) {
// Здесь запрос к API который возвращает JSON с информацией о товаре.
$this->detailCache = $data;
}
return $this->detailCache;
}
class API
{
public function getProduct(int $productId): Product
{
$product = $this->request(...); // Получение данных из API
return Product::from($product)
{
}
class Product
{
private int $id;
private string $title;
// прочие свойства
public function getId(): int
{
return $this->id;
}
public function getTitle(): int
{
return $this->title;
}
// прочие геттеры
// сеттеры, если нужны
public static function from(object $source): self
{
$product = new static();
$product->id = $source->id;
$product->title = $source->title;
// заполнение свойств
return $product;
}
}
...
$api = new API($login, $password);
$product = $api->getProduct(325);