Переполнение PHP объекта - PullRequest
       20

Переполнение PHP объекта

0 голосов
/ 10 февраля 2010

Я пытаюсь организовать занятия в проекте таким образом, как:

$TheRoberts = new family;

class family {
    public function __construct() {
        $bobby = new father;
        $cindy = new daughter;
    }
}

class father extends family {
    function PayBills() {}
    function GoToWork() {}
}

class daughter extends family {
    function AskForMoney() {}
    function GoToSchool() {}
}

Литература по предмету довольно абстрактная, но, если я правильно понимаю, это то, как это делается. Почему же тогда PHP выдает ошибки об исчерпании памяти и превышении времени выполнения? Вкратце: почему конструктор зацикливается?

Ответы [ 2 ]

4 голосов
/ 10 февраля 2010

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

Дочь и отец не должны расширять семью ... Вы должны создать класс family_member, в котором дочь и отец расширяют (is-a) отношения. Тогда семья может иметь family_members (has-a Relationship).

1 голос
/ 10 февраля 2010

Ваши классы father и daughter не определяют конструктор, поэтому они наследуют конструктор от family.Это приведет к созданию бесконечного количества father объектов.

В этом конкретном примере ни father, ни daughter не должны расширять класс family.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...