使子类继承基类的现有实例 我试图重写一个C++到PHP的应用程序,我很好奇如何用我的基类的一个实例来初始化我的子类。原因是我有一个基类列表,每个基类可以有多个配置。我在C++中通过从子类中的初始化器调用基类的复制构造函数来实现这个: class A { public: A(int a) : a(a) {}; protected: int a; } class B : public A { public: B(int b, const A &a) : A(a), b(b) {}; private: int b; }

使子类继承基类的现有实例 我试图重写一个C++到PHP的应用程序,我很好奇如何用我的基类的一个实例来初始化我的子类。原因是我有一个基类列表,每个基类可以有多个配置。我在C++中通过从子类中的初始化器调用基类的复制构造函数来实现这个: class A { public: A(int a) : a(a) {}; protected: int a; } class B : public A { public: B(int b, const A &a) : A(a), b(b) {}; private: int b; },php,c++,oop,inheritance,Php,C++,Oop,Inheritance,我一直在试图找出如何在PHP中实现类似的东西,但我对PHP对象模型的了解并没有反映出与我上面描述的任何类似的功能。看看这一点,并更改不需要的内容 <?php class A { protected $a; function __construct($_a) { $this->a = $_a; } function PrintA() { echo $this->a; } } class

我一直在试图找出如何在PHP中实现类似的东西,但我对PHP对象模型的了解并没有反映出与我上面描述的任何类似的功能。

看看这一点,并更改不需要的内容

<?php

class A
{
    protected $a;
    function __construct($_a)
    {
        $this->a = $_a;
    }

    function PrintA()
    {
        echo $this->a;
    }
}

class B extends A
{
    private $b;

    function __construct($_b, $_a)
    {
        $this->b = $_b;
        parent::__construct($_a);
    }

    function PrintB()
    {
        echo $this->b;
    }
}

$classA = new A(5);
$classA->printA();

$classB = new B(5,2);
$classB->printA();

?>

看看这一点,并更改不需要的内容

<?php

class A
{
    protected $a;
    function __construct($_a)
    {
        $this->a = $_a;
    }

    function PrintA()
    {
        echo $this->a;
    }
}

class B extends A
{
    private $b;

    function __construct($_b, $_a)
    {
        $this->b = $_b;
        parent::__construct($_a);
    }

    function PrintB()
    {
        echo $this->b;
    }
}

$classA = new A(5);
$classA->printA();

$classB = new B(5,2);
$classB->printA();

?>


我知道你可以通过手动设置B中A的所有值来实现它,但是,我的实际实现有大约20个变量,手动重新键入这些变量严重违反了DRY方法,并且我有问题。你可以使用父::\u构造($variable)。我不太明白你想做什么,更不合理的是B类中的第二个参数是对a类的引用,然后调用a类构造函数并将其作为int发送。我知道你可以通过手动设置B类中a的所有值来实现它,我的实际实现有大约20个变量,手动重新键入这些变量严重违反了DRY方法论,并且我的实现有问题。您可以使用父::u构造($variable)。不明白你想做什么,更不合理的是B类中的第二个参数,它是对a类的引用,然后你调用a类构造函数并将其作为int发送。