php类动态扩展
下面是我想用以前包含的类扩展每个类的示例,我知道这一点: Base.phpphp类动态扩展,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
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
?