2015-12-28 5 views
0

Я новичок в OOP PHP и следил за программой Lacacasts OOP Bootcamp. Я достиг определенной части учебника, где у меня проблемы. У меня есть следующие файлы (игнорировать, что конвенции не последовало, так как это фаза обучения):Почему массив не добавлен в свойство класса PHP?

<?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" 
    } 
} 

Я пытался добавив [] к строке $this->members = $members; под классом Staff, но он все равно дает мне тот же результат. Я также дважды проверял файлы, я должен ожидать двух членов вместо одного.

Может ли кто-нибудь сказать мне, где я ошибся?

Спасибо за ваше время.

ответ

1

Ваш код верен, за исключением одной строки - конструктор для класса Staff определен неверно. Заменить

public function __constructor($members = []) 

с

public function __construct($members = []) 

Из-за этой ошибки, линия $staff = new Staff([$jeffrey]); не оказывает никакого влияния на инициализации вашего внутреннего $members массива.

Смежные вопросы