PHP -从子类访问兄弟子类


PHP - Access to brothers child class from child class

我为你准备了这段php代码:

<?php
    class A{
        public function __construct(){
            $var1=$this->B1();
            $var2=$this->C1();
            echo 'var1: '.$var1.'<br>var2: '.$var2;
        }
    }
    class B extends A{
        protected function B1(){
            return 'b1';
        }
    }
    class C extends A{
        protected function C1(){
            return 'c1';
        }
    }
    new C();
?>

显然,如果我在第4行修改:

$var1=$this->B1();

$var1=$this->C1();

我得到这样的结果:

var1: c1
var2: c1

但是我想从C中访问B1()并获得这个结果:

var1: b1
var2: c1

并解决这个错误:"致命错误:在file.php第4行调用未定义的方法C::B1() ".

Thanks to all

如果你想要一个不同类的行为,你应该从那个类扩展。所以CC1()B1()

但是你又想要BC的行为。所以B应该包含C1B1。生成的类将同时具有C1()和' B1()。

现在你应该推广它们。将它们移动到父类A

   class A{
        public function __construct(){
            $var1=$this->B1();
            $var2=$this->C1();
            echo 'var1: '.$var1.'<br>var2: '.$var2;
        }
        protected function B1(){
            return 'b1';
        }
        protected function C1(){
            return 'c1';
        }
    }
    class B extends A{}
    class C extends A{}
    new C();
<?php
class C {
    protected function C1()
    {
        return 'c1';
    }
}
class B extends C 
{
    protected function B1()
    {
        return 'b1';
    }
}
class A extends B 
{
    public function __construct()
    {
        $var1=$this->B1();
        $var2=$this->C1();
        echo 'var1: '.$var1.'<br>var2: '.$var2;
    }
}
new A;
?>