Manipulácia s objektami v triedach v OOP v PHP

Triedy ako parametre metód môžu prijímať objekty iných tried a manipulovať s týmito objektmi. Pozrime sa na príklad. Majme nasledujúcu triedu:

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

Povedzme, že sme sa rozhodli vytvoriť triedu, ktorá bude manipulovať s množinou objektov používateľov:

php<?php
  class UsersCollection {
    
  }
?>

Objekty používateľov budeme ukladať vo forme poľa v súkromnej vlastnosti:

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

Vytvorme metódu na pridanie nového používateľa do poľa:

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

A teraz vytvorme metódu, ktorá vypíše mená všetkých používateľov:

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>';
      }
    }
  }
?>

Pozrime sa na fungovanie našej triedy. Najprv vytvorme jej objekt:

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

Teraz pridajme do našej kolekcie niekoľko používateľov:

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

A teraz zavolajme metódu, ktorá vypíše mená všetkých používateľov:

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

Vytvorte triedu EmployeesCollection, ktorá bude obsahovať pole zamestnancov.

Задание 2

V tejto triede vytvorte metódu na pridanie nového zamestnanca.

Задание 3

V tejto triede vytvorte metódu na výpis všetkých zamestnancov.

Задание 4

V tejto triede vytvorte metódu na výpočet celkovej mzdy všetkých zamestnancov.

Задание 5

V tejto triede vytvorte metódu na výpočet priemernej mzdy všetkých zamestnancov.