访问作为父对象成员变量的对象的成员函数 class
Access a member function of an object that is a member variable of a parent class
我正在尝试从子 class 访问对象的函数,其中该对象是父对象的受保护变量。
我不完全确定解决此问题的最佳方法...任何帮助或指示将不胜感激。
下面是我现在的设置方式,但它不起作用。它给出以下错误:
Catchable fatal error: Argument 1 passed to App\Parent::__construct()
must be an instance of App\Object, none given, called in
Controller.php on line 25 and defined in Parent.php on line 12
据我了解错误,我需要以某种方式将父 class 的实例传递给子 class。但这似乎是一种反模式,因为它扩展了 Parent class。我一定是遗漏了一些基本的东西。
Parent.php
class Parent
{
protected $object;
public function __construct(Object $object) // line 12
{
$this->object = $object;
}
}
Child.php
class Child extends Parent
{
public function doStuff()
{
return parent::$object->objectFunction());
}
}
Controller.php
...
namespaces etc
...
public function control()
{
$parent = new Parent(new Object($variable));
$child = new Child(); // line 25
$child->doStuff();
}
不要实例化单独的父项 class,它将作为实例化子项 class 的一部分进行实例化。
还将对象传递给子实例化并创建一个 __construct() 方法并将参数传递给它。
class Child extends Parent
{
public __construct($var)
{
parent::__construct($var);
}
public function doStuff()
{
return parent::$object->objectFunction());
}
}
Controller.php
public function control()
{
//$parent = new Parent(new Object($variable));
$child = new Child(new Object($variable)); // line 25
$child->doStuff();
}
我正在尝试从子 class 访问对象的函数,其中该对象是父对象的受保护变量。
我不完全确定解决此问题的最佳方法...任何帮助或指示将不胜感激。
下面是我现在的设置方式,但它不起作用。它给出以下错误:
Catchable fatal error: Argument 1 passed to App\Parent::__construct() must be an instance of App\Object, none given, called in Controller.php on line 25 and defined in Parent.php on line 12
据我了解错误,我需要以某种方式将父 class 的实例传递给子 class。但这似乎是一种反模式,因为它扩展了 Parent class。我一定是遗漏了一些基本的东西。
Parent.php
class Parent
{
protected $object;
public function __construct(Object $object) // line 12
{
$this->object = $object;
}
}
Child.php
class Child extends Parent
{
public function doStuff()
{
return parent::$object->objectFunction());
}
}
Controller.php
...
namespaces etc
...
public function control()
{
$parent = new Parent(new Object($variable));
$child = new Child(); // line 25
$child->doStuff();
}
不要实例化单独的父项 class,它将作为实例化子项 class 的一部分进行实例化。
还将对象传递给子实例化并创建一个 __construct() 方法并将参数传递给它。
class Child extends Parent
{
public __construct($var)
{
parent::__construct($var);
}
public function doStuff()
{
return parent::$object->objectFunction());
}
}
Controller.php
public function control()
{
//$parent = new Parent(new Object($variable));
$child = new Child(new Object($variable)); // line 25
$child->doStuff();
}