php类动态扩展

php类动态扩展,php,inheritance,Php,Inheritance,下面是我想用以前包含的类扩展每个类的示例,我知道这一点: Base.php class Base { protected function foo() { echo 'I am baseclass'; } } class Child1 { protected function foo() { echo 'I am child1'; } } class Child2 { protected function foo() { echo

下面是我想用以前包含的类扩展每个类的示例,我知道这一点:

Base.php

class Base {

 protected function foo()
 {
     echo 'I am baseclass'; 
 }

}
class Child1 {

 protected function foo()
 {
     echo 'I am child1'; 
 }

}
class Child2 {

 protected function foo()
 {
     echo 'I am child2'; 
 }

}
Child1.php

class Base {

 protected function foo()
 {
     echo 'I am baseclass'; 
 }

}
class Child1 {

 protected function foo()
 {
     echo 'I am child1'; 
 }

}
class Child2 {

 protected function foo()
 {
     echo 'I am child2'; 
 }

}
Child2.php

class Base {

 protected function foo()
 {
     echo 'I am baseclass'; 
 }

}
class Child1 {

 protected function foo()
 {
     echo 'I am child1'; 
 }

}
class Child2 {

 protected function foo()
 {
     echo 'I am child2'; 
 }

}
我的最后一堂课将是Mymodule

Mymodule.php

class Base {

 protected function foo()
 {
     echo 'I am baseclass'; 
 }

}
class Child1 {

 protected function foo()
 {
     echo 'I am child1'; 
 }

}
class Child2 {

 protected function foo()
 {
     echo 'I am child2'; 
 }

}
在不手动扩展的情况下,应执行以下操作:

Child1 extends Base,
Child2 extends Child1
Child2 extends Mymodule

这样可能吗?因为我有11个这样的类,所以我最终需要
Mymodule
请指导我。

您的代码显示Child2类扩展了Child1和Mymodule类。Php不允许多重继承,因此一个类只能扩展一个类


PHP5.4引入了一个名为Traits的特性。它允许一个类继承定义为traits:的多个类。如果您将Child1和mymodule类定义为traits,那么您可以从Child1和mymodule扩展Child2类

您的意思是要扩展
Base
,而不写“
扩展Base
”?我想知道为什么。是的,你是对的。我有许多文件,我想扩展与以前加载的每个文件file@RuslanOsmanov:我希望你们明白我的意思,我不想每次都写“扩展”,但最后一个模块类应该按名称加载每个类(我将给出数组中的文件列表)继承是一种编译时特性。另外,如果不使用
eval
include
require
或类似函数强制编译,就不可能在运行时扩展类。此外,该功能是否有用还值得怀疑,因为它引入了隐式(容易出错)行为。编写
的时间比编写问题要少11倍。因此,阅读所有注释和答案只是为了发现软件无法神奇地知道你在想什么。即使您不想多次编写
extends
,您仍然必须告诉编译器哪个类扩展了什么,否则您将得不到想要的。扩展“以前包含的类的每个类”是模糊的、脆弱的和不实际的。您如何以这种方式从
Base
扩展
Class1
Class2