Manipulace s objekty v třídách v OOP v PHP

Třídy mohou jako parametry metod přijímat objekty jiných tříd a manipulovat s těmito objekty. Podívejme se na příklad. Předpokládejme, že máme následující třídu:

php<?php
  class User {
    private $name;
    
    public function __construct($name) {
      $this->name = $name;
    }
    
    public function getName() {
      return $this->name;
    }
  }
?>

Předpokládejme, že jsme se rozhodli vytvořit třídu, která bude manipulovat s množinou objektů uživatelů:

php<?php
  class UsersCollection {
    
  }
?>

Budeme ukládat objekty uživatelů jako pole v privátní vlastnosti:

php<?php
  class UsersCollection {
    private $users;
    
    public function __construct() {
      $this->users = [];
    }
  }
?>

Vytvořme metodu pro přidání nového uživatele do pole:

php<?php
  class UsersCollection {
    private $users;
    
    public function __construct() {
      $this->users = [];
    }
    
    public function add($user) {
      $this->users[] = $user;
    }
  }
?>

A nyní vytvořme metodu, která vypíše jména všech uživatelů:

php<?php
  class UsersCollection {
    private $users;
    
    public function __construct() {
      $this->users = [];
    }
    
    public function add($user) {
      $this->users[] = $user;
    }
    
    public function show() {
      foreach ($this->users as $user) {
        echo $user->getName() . '<br>';
      }
    }
  }
?>

Podívejme se na fungování naší třídy. Nejprve vytvořme její objekt:

php<?php
  $uc = new UsersCollection();
?>

Nyní přidejme do naší kolekce několik uživatelů:

php<?php
  $uc->add(new User('john'));
  $uc->add(new User('eric'));
  $uc->add(new User('kyle'));
?>

A nyní zavolejme metodu, která vypíše jména všech uživatelů:

php<?php
  $uc->show();
?>
Задание 1

Vytvořte třídu EmployeesCollection, která bude obsahovat pole zaměstnanců.

Задание 2

V této třídě vytvořte metodu pro přidání nového zaměstnance.

Задание 3

V této třídě vytvořte metodu pro výpis všech zaměstnanců.

Задание 4

V této třídě vytvořte metodu pro výpočet celkové mzdy všech zaměstnanců.

Задание 5

V této třídě vytvořte metodu pro výpočet průměrné mzdy všech zaměstnanců.