繁体   English   中英

访问作为父类成员变量的对象的成员函数

[英]Access a member function of an object that is a member variable of a parent class

我正在尝试从子类访问对象的函数,其中该对象是父类的受保护变量。

我不完全确定解决这个问题的最佳方法......任何帮助或指示将不胜感激。

下面是我现在如何设置它,但它不起作用。 它给出了以下错误:

可捕获的致命错误:传递给 App\\Parent::__construct() 的参数 1 必须是 App\\Object 的一个实例,没有给出,在 Controller.php 中在第 25 行调用并在 Parent.php 中在第 12 行定义

因此,根据我的理解,我需要以某种方式将 Parent 类的实例传递给 Child 类。 但这似乎是一种反模式,因为它扩展了 Parent 类。 我一定缺少一些基本的东西。

父.php

class Parent
{
    protected $object;

    public function __construct(Object $object) // line 12
    {
        $this->object = $object;
    }

}

子.php

class Child extends Parent
{
    public function doStuff()
    {
        return parent::$object->objectFunction());
    }

}

控制器.php

...

namespaces etc

...

public function control()
{
    $parent = new Parent(new Object($variable));

    $child = new Child(); // line 25
    $child->doStuff();
}

不要实例化单独的父类,它将作为实例化子类的一部分进行实例化。

还将对象传递给子实例并创建一个 __construct() 方法并将参数传递给它。

class Child extends Parent
{
    public __construct($var)
    {
        parent::__construct($var);
    }

    public function doStuff()
    {
        return parent::$object->objectFunction());
    }

}

控制器.php

public function control()
{
    //$parent = new Parent(new Object($variable));

    $child = new Child(new Object($variable)); // line 25
    $child->doStuff();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM