afagorn
@afagorn
Пытаюсь стать хорошим веб-программистом

Есть ли в PHP общий класс от которого наследуются все классы?

Приветствую. Реализую паттерн репозиторий и в интерфейсе хочу добавить функцию save, которая должна принимать объекты разных типов. Собственно полиморфизм. В Java есть общий тип Object, а имеется ли подобный аналог в PHP? Или же нужно делать собственный класс Object?

interface InterfaceRepository {
	public function save($object);
}

abstract class LexiconRepository implements InterfaceRepository{
	public function save(Lexicon $object) {} //Хочу здесь принимать объекты конкретного типа, а в интерфейсе нельзя указать общий тип для всех классов 
}

class DeviceRepository implements LexiconInterface {
    public function save(Device $device)  {} //А тут уже нужен Device
}
  • Вопрос задан
  • 258 просмотров
Решения вопроса 1
@EvgeniiR
https://github.com/EvgeniiR
Хочу здесь принимать объекты конкретного типа, а в интерфейсе нельзя указать общий тип для всех классов

Вы нарушаете Liscow Substitution Principle когда в наследниках требуете более конкретный тип чем в родителе, не нужно так делать.

Для экземпляров любых классов есть тайп хинт object, но он вам не поможет по описанной выше причине.

Смысла в общем интерфейсе для всех репозиториев нет.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 16:53
1000 руб./за проект
19 апр. 2024, в 16:45
5000 руб./за проект
19 апр. 2024, в 16:22
30000 руб./за проект