Как расширить класс php до класса, который переопределяет его функции - PullRequest
0 голосов
/ 15 февраля 2019

Хорошо, у меня есть такая структура:

class Creature{
  public function sayHi(){
      echo "Hi";
  }
}

class HumanType extends Creature(){

}

class Human extends HumanType{

}

class Human232 extends Human{
      public function sayHi(){
        echo "Hello, bro";
      }
 }

class Human457 extend Human{

}

$Human = new Human232($id);
echo $Human->sayHi(); //Hello, bro

$Human2 = new Human457($id);
echo $Human2->sayHi(); //Hi

//And then I have this still to be implemented
class HumanCategory576{
     public function sayHi(){
      echo "Hi from the category!";
  }
} 

У меня, конечно, много классов, таких как: Человек457, Человек458, Человек459, Человек600, Человек601

А также: ЧеловекКатегория576, ЧеловекКатегория577, HumanCategory578, HumanCategory579, HumanCategory580

То, что я хочу сделать, это реализовать HumanCategory576 таким образом, чтобы sayHi () напечатало «Привет из категории!»только если класс Human, который (я полагаю) наследует его, не переворачивает функцию, как Human457.

Надеюсь, я был достаточно ясен.

Как мне это сделать?Спасибо

1 Ответ

0 голосов
/ 15 февраля 2019

Я предполагаю, что вы class HumanCategory576 хотели, чтобы вы продлили другой класс.

Вы можете использовать is_callable(), чтобы проверить, есть ли у HumanCategory576 родителяфункция:

is_callable('parent::sayHi'){
    parent::sayHi();
}else{
    echo "Hi from the category!";
}

Пожалуйста, возьмите is_callable в документации PHP.

<?php

    class TestClass extends TestClassParent {

        /** @brief Object initialisation callback
            @returns void */
        public function __construct() {

            # do initialisation 

            # ...

            # if we have a parent 

            if(is_callable('parent::__construct')) {

                # then bubble up 

                parent::__construct();
            }
        }
    }
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...