Answer the question
In order to leave comments, you need to log in
Why does type hint swear at the heir?
I can not understand one thing:
There is an abstract class Model , it has Employee and Department descendants .
There is an abstract class TableDataGateway , it has EmployeeTDGW and DepartmentTDGW
heirs. I write
in the TableDataGateway class : abstract public function add( Model $object); - meaning that only Model and its descendants can be passed
In child classes, I want to see something like public function add( Department $department) - I clarify that not any Model , but only Department
Но выскакивает warning кричащий о несоответствии типов. Пришлось в наследниках так-же прописывать Model в качестве переданных параметров.
Как можно сделать такое уточнение и что-бы валидатору понравилось моё решение?
Answer the question
In order to leave comments, you need to log in
Для абстрактных методов в классах потомках область видимости может варьироваться (она должна быть такой же или менее строгой), а вот сигнатуры методов должны совпадать. В интерфейсах также сигнатуры методов должны совпадать.
Как вариант можно сделать проверку внутри реализации метода дочернего класса через instanceof.
P.S. Судя по названию классов вы случаем там не ZF2 ковыряете?
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question