Могу ли я инициализировать дочерний класс в родительском классе - PullRequest
0 голосов
/ 31 октября 2018

У меня есть родительский класс и дочерний класс:

class Parent {
    function a() {
        $child = new child();
        $child->a1();
    }
}

class Child extends Parent{
    function a1() {

    }
}

Как я могу создать объект дочернего класса в родительском классе. И дочерний класс наследуется от того же родительского класса, где я пытаюсь инициализировать дочерний класс.

Это правильно ??

1 Ответ

0 голосов
/ 31 октября 2018

Вы не можете назвать свой класс Parent, это приведет к сбою сценария из-за следующей ошибки:

Неустранимая ошибка: невозможно использовать 'Parent' в качестве имени класса, поскольку оно зарезервировано в /var/www/html/class.php в строке 2

Это связано со следующим:

Три специальных ключевых слова self, parent и static используются для доступа свойства или методы внутри определения класса.

http://php.net/manual/en/language.oop5.paamayim-nekudotayim.php

Итак, когда мы переименовали класс Parent в Folk, все работает.

<?PHP
error_reporting(E_ALL);
class Folk {
    function a() {
        $child = new Child();
        $child->a1();
    }
}

class Child extends Folk{
    function a1() {
        echo("hi");
    }
}



$folk = new Folk();
$folk->a();

?>

это выводит: hi

Итак, чтобы ответить на ваш вопрос: Да , вы можете создать дочерний объект в родительском классе. Независимо от того, является ли это хорошей практикой или нет.

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