【发布时间】:2026-01-17 10:05:02
【问题描述】:
我是 OOP PHP 新手,一直在关注 Laracasts OOP Bootcamp。我已经达到了教程的某个部分,我遇到了麻烦。我有以下文件(忽略未遵循的约定,因为它是学习阶段):
<?php
class Person
{
protected $name;
public function __construct($name)
{
$this->name = $name;
}
}
class Staff
{
protected $members = [];
public function __constructor($members = [])
{
$this->members = $members;
}
public function add(Person $person)
{
$this->members[] = $person;
}
public function members()
{
return $this->members;
}
}
class Business
{
protected $staff;
public function __construct(Staff $staff)
{
$this->staff = $staff;
}
public function hire(Person $person)
{
$this->staff->add($person);
}
public function getStaffMembers()
{
return $this->staff->members();
}
}
$jeffrey = new Person('Jeffrey Way');
$staff = new Staff([$jeffrey]);
$laracasts = new Business($staff);
$laracasts->hire(new Person('Jane Doe'));
var_dump($laracasts->getStaffMembers());
不幸的是,var_dump 只给了我一名工作人员:
array(1) {
[0]=>
object(Person)#4 (1) {
["name":protected]=>
string(8) "Jane Doe"
}
}
我尝试将 [] 添加到 Staff 类下的 $this->members = $members; 行,但它仍然给我相同的输出。我还仔细检查了文件,我应该期待两个成员而不是一个。
谁能告诉我哪里出错了?
感谢您的宝贵时间。
【问题讨论】: