За последние 24 часа нас посетили 18732 программиста и 1647 роботов. Сейчас ищут 1727 программистов ...

Проблема с отсутствующим конструктором родительского класса

Тема в разделе "Прочие вопросы по PHP", создана пользователем saveug, 5 май 2011.

  1. saveug

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

    С нами с:
    5 май 2011
    Сообщения:
    4
    Симпатии:
    0
    Есть следующий код:
    Код (Text):
    1.  
    2. class A
    3. {
    4. function A() {}
    5. }
    6.  
    7. class B extends A
    8. {
    9. }
    10.  
    11. class C extends B
    12. {
    13. function C() { parent::B(); }
    14. }
    в *некоторых* сборках PHP создание объекта типа C приводит примерно к следующему сообщению:
    PHP Fatal error: Call to undefined method B::B() in ...

    Проблема лечится легко - явно объявляем конструктор у класса B.

    Нужно понять как идентифицировать такие проблемы? Может быть какой-то особенный тип ошибок позволит их отлавливать? Что за опции компилятора использованы, которые приводят к появлению этих ошибок?
     
  2. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    в соседнем топике как раз разжевали __get
     
  3. MiksIr

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

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    Понапишут говнокод, а потом спрашивают - какие бы им опции использовать, что бы он заработал.

    Во-первых, не используйте в качестве конструктора название метода равное названию класса.

    Во-вторых, не вызывайте у родителя конструктор, если конструктора нет.