Php 什么';通过父构造函数冒泡动态数据的方法是什么?
假设我有一个农场,里面有各种各样的动物。当新动物到来时,我想欢迎它们。我不想为每个动物重新创建欢迎函数,所以我将其设为1,并将其扩展到动物类Php 什么';通过父构造函数冒泡动态数据的方法是什么?,php,oop,inheritance,Php,Oop,Inheritance,假设我有一个农场,里面有各种各样的动物。当新动物到来时,我想欢迎它们。我不想为每个动物重新创建欢迎函数,所以我将其设为1,并将其扩展到动物类 class Chicken { public function __construct(ChickenCoop $chickenCoop) { $this->chickenCoop = $chickenCoop; } public function gate() { $this
class Chicken
{
public function __construct(ChickenCoop $chickenCoop)
{
$this->chickenCoop = $chickenCoop;
}
public function gate()
{
$this->chickenCoop->addChicken('Clara');
$this->chickenCoop->addChicken('Paula');
$this->chickenCoop->addChicken('Betty');
echo $this->chickenCoop->welcomeAnimals();
}
}
class ChickenCoop extends AnimalHousing
{
private array $chickens = [];
public function __construct()
{
parent::__construct($this->chickens);
}
public function addChicken(string $chicken)
{
$this->chickens[] = $chicken;
}
}
class AnimalHousing
{
private array $animals;
public function __construct(array $animals)
{
$this->animals = $animals;
}
public function welcomeAnimals()
{
$body = "welcome ";
foreach ($this->animals as $animal) {
$body .= "{$animal} ,";
}
return $body;
}
}
问题是父对象::_构造($this->chicks);为其父级构造空数组。如何将这些鸡的数据传递给AnimalHousing类?你所做的没有多大意义 为什么在父类中需要一个与“动物”数组分开的“鸡”数组?在这种情况下,“动物”名单的意义是什么?它不能动态更新。由于
$fecks
只是一个字符串列表(不是表示鸡的更复杂类型),因此它不会在$animals
列表上方添加任何值
将“addChicken”添加到父类中的“animals”列表中,而不是在子类中添加单独的列表,这样做更有意义
也许是这样的:
<?php
class Chicken
{
public function __construct(ChickenCoop $chickenCoop)
{
$this->chickenCoop = $chickenCoop;
}
public function gate()
{
$this->chickenCoop->addChicken('Clara');
$this->chickenCoop->addChicken('Paula');
$this->chickenCoop->addChicken('Betty');
echo $this->chickenCoop->welcomeAnimals();
}
}
class ChickenCoop extends AnimalHousing
{
public function __construct()
{
parent::__construct();
}
public function addChicken(string $chicken)
{
$this->animals[] = $chicken;
}
}
class AnimalHousing
{
protected $animals = [];
public function __construct()
{
}
public function welcomeAnimals()
{
$body = "welcome ";
foreach ($this->animals as $animal) {
$body .= "{$animal} ,";
}
return $body;
}
}
$coop = new ChickenCoop();
$chick = new Chicken($coop);
$chick->gate();