Есть две модели Компания и Контакт. Ранее я в Компании хранил массив Контактов. Но тк это две независимые модели, то решил удалить метод addContact из Компании. Вынести его в класс коллекции. Но тут сложности возникли.
class Company{
public int $id;
public string $name;
//public array $contacts;
public function __construct(int $id, string $name)
{
$this->id = $id;
$this->name = $name;
}
/*public function addContact(Contact $contact){
$this->contacts[] = $contact;
}*/
}
class Contact{
public int $id;
public string $name;
public function __construct(int $id, string $name)
{
$this->id = $id;
$this->name = $name;
}
}
class CompanyCollection
{
public array $data;
public function getData():array
{
$this->merge();
return $this->data;
}
public function merge()
{
for($i = 0; $i <= 5; $i++){
$companyId = $i+1;
$this->addCompany(new Company($companyId, 'CompanyName'));
for($j = 0; $j < 3; $j++){
$contactId = $j + 1;
$this->addContact(new Contact($contactId, 'ContactName'), $i);
}
}
}
public function addCompany(Company $company){
$this->data[] = $company;
}
public function addContact(Contact $contact, int $position){
$this->data[$position][] = $contact;
}
}
В классе коллекции получилась какая-то чушь. Как правильно соединить?