Size: a a a

2020 December 29

АС

Альберт Степанцев... in PHP
"если запрашивается нечто типа InterfaceA, подставь туда $objectA"
источник

МФ

Максим Федоров... in PHP
Санжар
классный блог кстати
в свое время помогла статья про трудоустройства
Заброшено все :(
источник

AB

Anton Belonovich in PHP
Альберт Степанцев
если вы передадите в конструктор объект, у которого есть методы getFirst() и getSecond() - почему нельзя вызывать эти методы?
Откуда клиенту знать, что в переданном объекте есть метод getSecond()? Клиентский код видит интерфейс  - а в нём только один метод.
Работать-то будет, но это сродни магии.
источник

АС

Альберт Степанцев... in PHP
в общем, Константин, ошибки тут нет
есть ошибка в вашем понимании, что такое интерфейсы
источник

a

asterisk in PHP
Санжар
классный блог кстати
в свое время помогла статья про трудоустройства
Ты ж вроде в дот нет хотел
источник

АС

Альберт Степанцев... in PHP
Anton Belonovich
Откуда клиенту знать, что в переданном объекте есть метод getSecond()? Клиентский код видит интерфейс  - а в нём только один метод.
Работать-то будет, но это сродни магии.
ну если не знать язык, на котором пишешь, конечно, он будет сродни магии
источник

АС

Альберт Степанцев... in PHP
Антон, смотрите выше внимательнее
источник

С

Санжар in PHP
asterisk
Ты ж вроде в дот нет хотел
на пхп работать приходится все равно х)
источник

K

Konstantin in PHP
Альберт Степанцев
в общем, Константин, ошибки тут нет
есть ошибка в вашем понимании, что такое интерфейсы
всё я понял
источник

АС

Альберт Степанцев... in PHP
Константин намеренно передал объект, у которого есть два нужных метода
источник

АС

Альберт Степанцев... in PHP
затем их вызывает
источник

АС

Альберт Степанцев... in PHP
при этом объект, как ни странно, полностью удовлетворяет требованиям интерфейса
источник

АС

Альберт Степанцев... in PHP
всё
источник

K

Konstantin in PHP
ПРосто логично было бы если бы пыха ругалась
источник

K

Konstantin in PHP
Потому что класс можно подменить
источник

MM

Maksim Masalov in PHP
это было бы не логично)
источник

K

Konstantin in PHP
А метод будет вызываться а в новом классе его может не быть
источник

DP

Dmitri Ponomarjov in PHP
Нет, это ответственность разработчка. Если нужны оба метода, то нужно два интерфейса или один, наследующийся от обоих
источник

K

Konstantin in PHP
разработчик просто может забыть описать его в интерфейсе
источник

AB

Anton Belonovich in PHP
Альберт Степанцев
при этом объект, как ни странно, полностью удовлетворяет требованиям интерфейса
Объект полностью удовлетворяет, да.
Проблема не в этом, а в том что клиентский код (класс C) занимается самодеятельностью, опасно вызывая метод, о котором только догадывается.
источник