Стандартно для подобных случаев реализуется класс (модель) с полным перечнем параметров для конструктора (возможно с default параметрами) и метод, создающий этот объект.
Модель:class Post {
private $id;
private $title;
private $description;
/** ... etc ... */
public function __construct($id, $title, $description) {
$this->id = $id;
$this->title = $title;
$this->description = $description;
}
public function getId() {
return $this->id;
}
public function getTitle() {
return $this->title;
}
public function getDescription() {
return $this->description;
}
}
Методы класса:class PostProvider {
public function getPostById($id) {
$response = /** ... Получаем данные ... */;
if (!$response) {
throw new Exception('Not found.');
}
return $this->createPost($response);
}
public function getPostsByTitle($id) {
$result = [];
$responses = /** ... Получаем данные ... */;
foreach ($responses as $response) {
$result[] = $this->createPost($response);
}
return $result;
}
/**
* Метод возвращает объект Post по переданному массиву данных
* @return Post
*/
private function createPost(array $response){
return new Post($response['id'], $response['title'], $response['description']);
}
}