Как я могу создать новый объект на основе текущего?

0

У меня есть базовый класс и несколько классов, которые простираются от базового класса.

class B {}
class C extends B {}
class D extends B {}

Как я могу создать C или D внутри метода динамически из B? какой лучший способ?

Например, я попробовал:

class B {

    function hello() { echo "hello"; }

    function createObject()
    {
        $temp = new self();
        $temp->hello();
    }
}

$t = new C();
$t->createObject();
Теги:
class
methods
abstract-class

1 ответ

0

Ты прав! Но вы должны вернуть свой новый объект, например:

class B {

    function hello() { echo "hello"; }

    function createObject()
    {
        $temp = new self();
        $temp->hello();
        return $temp; // <--- here
    }
}

$t = new C();
$tNew = $t->createObject();
  • 0
    new self () создает новый объект B, а не C

Ещё вопросы

Сообщество Overcoder
Наверх
Меню