如何将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模式确实知道新类派生自的类层次结构。这种测试有时用于工厂模式中,其中可能会生成多个类的实例。