PHP类继承深度
我正试图弄清楚遗产到底有多深 例如,如果我从A班开始 B类扩展了A类 C类扩展了B类 D类扩展了C类 E类扩展了D类 F类扩展了E类 G类扩展了F类 大多数较低级别都是抽象类,其方法中填充了代码和抽象方法。这是一个相当大和复杂的结构。把头伸进去 类G仍然能够访问类A的方法和参数,以及从类A访问抽象方法吗 我这样问是因为我在eclipse中遇到了问题,没有将低级类方法添加到自动完成中。我想知道这是否真的有限制,或者只是eclipse达到了代码完成的最大值PHP类继承深度,php,eclipse,class-design,Php,Eclipse,Class Design,我正试图弄清楚遗产到底有多深 例如,如果我从A班开始 B类扩展了A类 C类扩展了B类 D类扩展了C类 E类扩展了D类 F类扩展了E类 G类扩展了F类 大多数较低级别都是抽象类,其方法中填充了代码和抽象方法。这是一个相当大和复杂的结构。把头伸进去 类G仍然能够访问类A的方法和参数,以及从类A访问抽象方法吗 我这样问是因为我在eclipse中遇到了问题,没有将低级类方法添加到自动完成中。我想知道这是否真的有限制,或者只是eclipse达到了代码完成的最大值 我还远没有到可以用我所做的来测试这个的阶段
我还远没有到可以用我所做的来测试这个的阶段,我不想发现当我完成时,顺序较低的方法是不可访问的。听起来像是你的编辑器有问题。例如,请参见以下快速脏的演示:
php > class a { function foo() { echo "A::foo()\n"; } }
php > $letters = range('a', 'z');
php > for ($i = 0; $i < 25; $i++) { eval("class {$letters[$i+1]} extends {$letters[$i]} {}"); }
php > $z = new z;
php > $z->foo();
A::foo()
PHP不会对您施加任何类似的限制。使用类似的:
<?php
abstract class A {
abstract function getValue();
}
abstract class B extends A{ }
abstract class C extends B{ }
abstract class D extends C{ }
abstract class E extends D{ }
abstract class F extends E{ }
class G extends F{
}
?>
一个致命的错误是G实际上没有实现a中定义的抽象方法。从上面的链接可以看出,事实上就是这样
因此,虽然这是一个深度继承,但它低于任何PHP的限制。相反,您可能会在PDT中遇到索引器问题。以下php:
class A
{
public function FooA()
{
echo "A!!";
}
}
class B extends A
{
public function FooB()
{
echo "B!!";
}
}
class C extends B
{
public function FooC()
{
parent::FooB();
parent::FooA();
}
}
$test = new C();
$test->FooC();
印刷品:
B!!A
我在50的深度测试了这个插件,它的功能仍然很好,所以你肯定可以,听起来你的编辑器插件在继承树中看起来只有这么深非常感谢。我怀疑这就是问题所在,但我只是不确定。我也很想知道这个结构是否有实际的限制,我不认为“继承级别”有明确的限制。这并不是说你需要把所有的父类放在某个可能溢出的堆栈上。如果有的话,加载所有父类的必要性将意味着脚本可用的内存是实际的限制。