Объекты внутри классов в ООП в 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

Выведите в консоль имя, должность и отдел для созданного работника.