Всех приветствую! Вообще не въеду, есть две статьи на хабре про полиморфизм. 1-я статья habrahabr.ru/post/37576 2-я статья habrahabr.ru/post/37610 Во 2-й автор пишет мол он прочитал первую, и в ней не совсем полиморфизм. И приводит пример. После примера пишет фразу "вся суть в концовке кода". Но концовка кода та НИЧЕМ не отличается, за исключением передачи $id в качестве параметра. Блин, это что ли он имеет ввиду? Ткните плиз носом, в чем ПРИНЦИПИАЛЬНОЕ отличие этих примеров, и почему ИМЕННО во втором "канонический" полиморфизм?
Суть полиморфизма — взаимозаменяемость объектов, реализующих общий для них интерфейс. Это демонстрируется в коде. Но во второй статье опять используется частный случай полиморфизма — наследование. Автор 2 просто выкинул лишние методы. Добавлено спустя 17 минут 3 секунды: p.s. я вспомнил, что когда-то на другом форуме я уже разбирал этот код и у меня были вопросы к автору по смыслу этого фрагмента Код (PHP): if ($publication instanceof Publication) … else //исключение или обработка ошибки Этот код рабочий, но надо ли здесь проверять принадлежность к классу/интерфейсу — это большой вопрос. Опять, полиморфизм это взаимозаменяемость объектов. Если внезапно в $publication окажется объект класса, не имеющего метода do_print, полюбому произойдет ошибка, даже без if. Нештатная ситуация требует останова скрипта — это нормально. Именно так будет работать популярный сейчас type hinting. Жаль что такая полезная фича не рассмотрена ни в первой, ни во второй статье.