为什么数组没有添加到PHP类'属性?

时间:2015-12-28 22:51:34

标签: php arrays class

我是OOP PHP的新手,并且一直关注Laracasts OOP Bootcamp。我已经达到教程的某个部分,我遇到了麻烦。我有以下文件(忽略没有遵循约定,因为这是学习阶段):

$(document).on('load', function() {
    var imgSrc = $('#backgroundImage').prop('src');
    $(body).css('background', 'url(' + img + ')');
});

不幸的是,var_dump只给了我一名工作人员:

<?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());

我尝试将array(1) { [0]=> object(Person)#4 (1) { ["name":protected]=> string(8) "Jane Doe" } } 添加到Staff类下的行[],但它仍然给我相同的输出。我还要仔细检查文件,我应该期待两个成员而不是一个。

有人可以告诉我哪里出错了吗?

感谢您的时间。

1 个答案:

答案 0 :(得分:1)

除了一行之外,您的代码是正确的 - 类Staff的构造函数定义不正确。取代

public function __constructor($members = [])

public function __construct($members = [])

由于此错误,行$staff = new Staff([$jeffrey]);对内部$members数组的初始化没有影响。