За последние 24 часа нас посетили 17174 программиста и 1225 роботов. Сейчас ищут 1404 программиста ...

Чем отличаются эти две статьи (полиморфизм, PHP)?

Тема в разделе "Прочие вопросы по PHP", создана пользователем link00, 14 дек 2014.

  1. link00

    link00 Активный пользователь

    С нами с:
    1 сен 2012
    Сообщения:
    65
    Симпатии:
    0
    Всех приветствую! Вообще не въеду, есть две статьи на хабре про полиморфизм. 1-я статья habrahabr.ru/post/37576 2-я статья habrahabr.ru/post/37610 Во 2-й автор пишет мол он прочитал первую, и в ней не совсем полиморфизм. И приводит пример. После примера пишет фразу "вся суть в концовке кода". Но концовка кода та НИЧЕМ не отличается, за исключением передачи $id в качестве параметра. Блин, это что ли он имеет ввиду? Ткните плиз носом, в чем ПРИНЦИПИАЛЬНОЕ отличие этих примеров, и почему ИМЕННО во втором "канонический" полиморфизм?
     
  2. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    Вероятнее всего первая статья была отредактирована. Сейчас они обе показывают полиморфизм.
     
  3. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.114
    Симпатии:
    1.244
    Адрес:
    там-сям
    Суть полиморфизма — взаимозаменяемость объектов, реализующих общий для них интерфейс. Это демонстрируется в коде. Но во второй статье опять используется частный случай полиморфизма — наследование. Автор 2 просто выкинул лишние методы.

    Добавлено спустя 17 минут 3 секунды:
    p.s. я вспомнил, что когда-то на другом форуме я уже разбирал этот код и у меня были вопросы к автору по смыслу этого фрагмента
    Код (PHP):
    1. if ($publication instanceof Publication) … else //исключение или обработка ошибки     
    Этот код рабочий, но надо ли здесь проверять принадлежность к классу/интерфейсу — это большой вопрос. Опять, полиморфизм это взаимозаменяемость объектов. Если внезапно в $publication окажется объект класса, не имеющего метода do_print, полюбому произойдет ошибка, даже без if.

    Нештатная ситуация требует останова скрипта — это нормально. Именно так будет работать популярный сейчас type hinting. Жаль что такая полезная фича не рассмотрена ни в первой, ни во второй статье.