Χειρισμός Αντικειμένων σε Κλάσεις στην OOP στην PHP

Οι κλάσεις μπορούν να δεχτούν αντικείμενα άλλων κλάσεων ως παραμέτρους μεθόδων και να χειριστούν αυτά τα αντικείμενα. Ας δούμε ένα παράδειγμα. Ας υποθέσουμε ότι έχουμε την ακόλουθη κλάση:

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

Ας υποθέσουμε ότι αποφασίσαμε να δημιουργήσουμε μια κλάση, η οποία θα χειρίζεται ένα σύνολο αντικειμένων χρηστών:

php<?php
  class UsersCollection {
    
  }
?>

Θα αποθηκεύσουμε τα αντικείμενα χρηστών σε μορφή πίνακα σε μια ιδιωτική ιδιότητα:

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

Ας δημιουργήσουμε μια μέθοδο για την προσθήκη νέου χρήστη στον πίνακα:

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

Και τώρα ας δημιουργήσουμε μια μέθοδο, η οποία θα εμφανίζει τα ονόματα όλων των χρηστών:

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

Ας δούμε πώς λειτουργεί η κλάση μας. Αρχικά, ας δημιουργήσουμε το αντικείμενό της:

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

Τώρα ας προσθέσουμε στη συλλογή μας αρκετούς χρήστες:

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

Και τώρα ας καλέσουμε τη μέθοδο που θα εμφανίσει τα ονόματα όλων των χρηστών:

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

Δημιουργήστε την κλάση EmployeesCollection, η οποία θα περιέχει έναν πίνακα εργαζομένων.

Задание 2

Δημιουργήστε σε αυτήν την κλάση μια μέθοδο για την προσθήκη νέου εργαζομένου.

Задание 3

Δημιουργήστε σε αυτήν την κλάση μια μέθοδο για την εμφάνιση όλων των εργαζομένων.

Задание 4

Δημιουργήστε σε αυτήν την κλάση μια μέθοδο για τον υπολογισμό του συνολικού μισθοού όλων των εργαζομένων.

Задание 5

Δημιουργήστε σε αυτήν την κλάση μια μέθοδο για τον υπολογισμό του μέσου μισθοού όλων των εργαζομένων.