Динамически добавлять правильный класс в конструктор в зависимости от вызываемого

У меня есть классы репозитория, которые реализуют те же контракты и шаблон, поэтому в основном у меня есть несколько таких:

class EmployeeRepository {
private $transformer; //instance of EmployeeTransformer
public function find() {
return new ReturnObject($this->transformer, $employee);
}
}

class CustomerRepository {
private $transformer; //instance of CustomerTransformer
public function find() {
return new ReturnObject($this->transformer, $customer);
}
}

как вы можете видеть, они все возвращают ReturnObject, который в основном принимает объект преобразователя и объект сущности в качестве параметров конструктора. Преобразователь используется для объекта ReturnObject для определения выходного формата для классов контроллера.

class ReturnObject {
private $transformer;
private $response;

function __construct($transformer, $entity) {
$this->transformer = $transformer;
$this->entity = $entity;
$this->response = new ApiResponse();
}

public function apiResponse() {
return $this->response->array($this->transformer, $entity);
}
}

Мой вопрос касается параметра конструктора для трансформатора. Есть ли способ для репозиториев иметь возможность передавать правильный класс преобразователя в ReturnObject, не отправляя его в качестве параметра конструктора? Может быть, с фабричным дизайном?
Есть две причины, по которым я хочу удалить аргумент из конструктора:

  1. Конструктор уже имеет много аргументов. (Я удалил их из моих примеров выше, чтобы сделать код проще для понимания, но на самом деле в конструкторе уже есть 6 параметров, кроме преобразователя)

  2. У меня есть много репозиториев с большим количеством функций, и было бы замечательно, чтобы не нужно было отправлять преобразователь во всех возвратах, чтобы уменьшить код и потенциально ошибки

3

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector