Итак, в основном у меня есть класс B
а также C
чей родитель class A
,
Class A
имеет публичный метод set()
, Но я хочу метод set()
быть частным в классе B
и публика в классе C
так что вы можете вызвать его из экземпляров класса C
и вы не можете назвать это из экземпляров класса B
,
Возможно ли это в PHP?
Нет. Теория заключается в том, что вы должны иметь возможность использовать экземпляры подкласса везде, где вы можете использовать экземпляры родителя, не зная, что у вас есть.
Если у класса А есть открытый метод foo
Я должен быть в состоянии позвонить $a->foo()
для любого значения, где $a instanceof A
правда.
Если подкласс B делает этот метод закрытым, я не могу сделать вызов.
Это причудливое название — принцип замещения Лискова.
Вы, однако, можете сделать так, чтобы метод вел себя так, как вам нравится, например, он может выдать исключение в классе B, но обязательно всегда где-нибудь его перехватывать.
Других решений пока нет …