如何将php类扩展到超越它的类';s函数

如何将php类扩展到超越它的类';s函数,php,class,inheritance,polymorphism,Php,Class,Inheritance,Polymorphism,好的,我有一个这样的结构: 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 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, Human600, 人道主义601

而且: 人类分类576, 人类分类577, 人类分类578, 人类分类579, 人类分类580

我想做的是实现HumanCategory 576,使sayHi()能够打印“Hi from the category!”,前提是(我想)继承它的人类类没有像Human457那样验证函数

我希望我说得够清楚了

我该怎么办?谢谢

我想你是想让
人类分类576
扩展另一个类

您可以使用
is\u callable()
检查
HumanCategory576
parent是否具有以下功能:

is_callable('parent::sayHi'){
    parent::sayHi();
}else{
    echo "Hi from the category!";
}
请仔细阅读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();
            }
        }
    }
?>


是否应该扩展类
HumanCategory576
呢?只需在
Human
类中实现这样一个方法作为默认行为即可。“重写”是指在派生(扩展)类中重写ancester(扩展)类的方法。问题是我需要更多基于人类类别的默认方法。这可以通过根据Human类中的Human类别进行切换来实现。但是,必须有更好的方法,因为这样做意味着在每个默认函数中都有数百个案例。作为一个简单的直接继承OOP模式,这没有多大意义,因为当您不知道是否存在某个构造函数时,您也不知道它需要哪些参数。一个良好实现的OOP模式确实知道新类派生自的类层次结构。这种测试有时用于工厂模式中,其中可能会生成多个类的实例。