Обекти вътре в класове в ООП в PHP

В класове могат да се използват обекти от други класове. Нека разгледаме с пример. Да предположим, че искаме да създадем потребител с име и фамилия, както и град, в който той живее. Да предположим, че имаме следния клас за град:

php<?php
  class City {
    public $name;
    
    public function __construct($name) {
      $this->name = $name;
    }
  }
?>

Ще подаваме името, фамилията и града като параметри на конструктора:

php<?php
  class User {
    public $name;
    public $surn;
    public $city;
    
    public function __construct($name, $surn, $city) {
      $this->name = $name;
      $this->surn = $surn;
      $this->city = $city;
    }
  }
?>

Като името и фамилията ще бъдат низове, а градът - обект от собствен отделен клас:

php<?php
  $city = new City('luis');
  $user = new User('john', 'smit', $city);
?>

Нека изведем името на нашия потребител:

php<?php
  echo $user->name;
?>

А сега нека изведем името на града за нашия потребител:

php<?php
  echo $user->city->name;
?>
Задание 1

Даден е следният клас:

php<?php
  class Employee {
    public $name;
    public $position;
    public $department;
  
    public function __construct($name, $position, $department) {
      $this->name = $name;
      $this->position = $position;
      $this->department = $department;
    }
  }
?>

Направете така, че във втория и третия параметър да се подават обекти от отделни класове.

Задание 2

Създайте обект със служител с помощта на класа от предишната задача.

Задание 3

Изведете в конзолата името, длъжността и отдела за създадения служител.