Как передать в параметрах интерфейса ДТО (или другую сущность)
Есть у меня Сервис который имплементирует интерфейс
class EmployeesService implements ServiceInterface
{
/**
* @param EmployeeDTO $data
* @return JsonResponse
*/
public function addNewItem(EmployeeDTO $data): JsonResponse
{
.....
}
и сам интерфейс
interface ServiceInterface
{
public function getList();
public function getItemById(int $id);
public function addNewItem(mixed $data);
public function updateItem(mixed $data, int $id);
}
Возможно ли (обертку добавить или как иначе) описать в интерфейсе метод addNewItem так чтобы он принимал параметр DataTransferObject $data а вот сами реализации методов могли принять дочерний класс (EmployeeDTO) разный в разном случае т.е.:
class EmployeesService implements ServiceInterface
{
public function addNewItem(EmployeeDTO $data)
{
.....
}
class SomeAnotherService implements ServiceInterface
{
public function addNewItem(SomeAnotherDTO $data)
{
.....
}