Ответов: 2 Просмотров: 946
|
Здравствуйте!
Суть проблемы такова:
Есть класс описывающий Товар интернет магазина:
PHP:
скопировать код в буфер обмена
class Item { protected $api_token; protected $id; protected $name; protected $description; protected $category; protected $price; protected $photo; public function __construct($api_token, $item = []) { $this->api_token = $api_token; foreach ($item as $key => $value) { $this->$key = $value; } } } public function getById(...$items) { $obj = []; $params = [ 'api_token' => $this->api_token ]; foreach ($result['items'] as $item) { $info = [ 'id' => $item['id'], 'name' => $item['name'], 'description' => $item['description'], 'category' => $item['category'], 'price' => $item['price'], 'photo' => $item['photo'], ]; $obj[] = new Item($this->api_token, $info); } return $obj; } else { return null; } } public function save() { $params = [ 'name' => $this->name, 'description' => $this->description, 'category' => $this->category, 'price' => $this->price, 'photo' => $this->photo, 'api_token' => $this->api_token ]; } else { $params = [ 'id' => $this->id, 'name' => $this->name, 'description' => $this->description, 'category' => $this->category, 'price' => $this->price, 'photo' => $this->photo, 'api_token' => $this->api_token ]; $result = file_get_contents('https://example-shop.com/api/' . 'updateItem?' . $query); } return $result['result']; } }
Суть такова, могу ли я как то вынести поле $api_token за пределы класса, поскольку у меня $api_token - используется в каждом методе класса (для запроса к https://example-shop.com/api/), а хотелось бы использовать статические методы (public static function getById()), потому что как то не красиво получается, что бы получить объект товара - нужно создать объект..
Хотя еще есть метод в этом классе save() - который либо сохраняет новый товар (если нету у него id), либо обновляет его (если есть id) - эти методы уже относятся к объекту.. |