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
}
  • Вопрос задан
  • 212 просмотров
Решения вопроса 1
@EvgeniiR
https://github.com/EvgeniiR
Хочу здесь принимать объекты конкретного типа, а в интерфейсе нельзя указать общий тип для всех классов

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

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

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

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

Войти через центр авторизации
Похожие вопросы