PHP类继承深度

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达到了代码完成的最大值 我还远没有到可以用我所做的来测试这个的阶段

我正试图弄清楚遗产到底有多深

例如,如果我从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的深度测试了这个插件,它的功能仍然很好,所以你肯定可以,听起来你的编辑器插件在继承树中看起来只有这么深

非常感谢。我怀疑这就是问题所在,但我只是不确定。我也很想知道这个结构是否有实际的限制,我不认为“继承级别”有明确的限制。这并不是说你需要把所有的父类放在某个可能溢出的堆栈上。如果有的话,加载所有父类的必要性将意味着脚本可用的内存是实际的限制。