Пусть у нас дан вот такой класс Employee
:
<?php
class Employee
{
private $name;
private $salary;
public function __construct($name, $salary)
{
$this->name = $name;
$this->salary = $salary;
}
public function getName()
{
return $this->name;
}
public function getSalary()
{
return $this->salary;
}
}
?>
Давайте сделаем еще и класс EmployeesCollection
,
который будет хранить массив работников,
то есть массив объектов класса Employee
.
Пусть работники будут храниться в свойстве
employees
, а для добавления работников
будет существовать метод add
. Этот
метод параметром будет принимать объект класса
Employee
и записывать его в конец
массива $this->employees
:
<?php
class EmployeesCollection
{
private $employees = []; // массив работников, по умолчанию пустой
// Добавляем нового работника:
public function add($employee)
{
$this->employees[] = $employee; // $employee - объект класса Employee
}
}
?>
Давайте также добавим в наш класс метод getTotalSalary
,
который будет находить суммарную зарплату
всех хранящихся работников:
<?php
class EmployeesCollection
{
private $employees = [];
public function add($employee)
{
$this->employees[] = $employee;
}
// Находим суммарную зарплату:
public function getTotalSalary()
{
$sum = 0;
// Перебираем работников циклом:
foreach ($this->employees as $employee) {
$sum += $employee->getSalary(); // получаем з/п работника через метод getSalary()
}
return $sum;
}
}
?>
Давайте проверим работу класса EmployeesCollection
:
<?php
$employeesCollection = new EmployeesCollection;
$employeesCollection->add(new Employee('john', 100));
$employeesCollection->add(new Employee('eric', 200));
$employeesCollection->add(new Employee('kyle', 300));
echo $employeesCollection->getTotalSalary(); // выведет 600
?>
Давайте сделаем наш класс EmployeesCollection
более жизненным и добавим метод получения
всех работников и метод подсчета:
<?php
class EmployeesCollection
{
private $employees = [];
// Получаем всех работников в виде массива:
public function get()
{
return $this->employees;
}
// Подсчитываем количество хранимых работников:
public function count()
{
return count($this->employees);
}
public function add($employee)
{
$this->employees[] = $employee;
}
public function getTotalSalary()
{
$sum = 0;
foreach ($this->employees as $employee) {
$sum += $employee->getSalary();
}
return $sum;
}
}
?>
Сделайте класс Product
, в котором
будут приватные свойства name
, price
и quantity
. Пусть все эти свойства
будут доступны только для чтения.
Добавьте в класс Product
метод getCost
,
который будет находить полную стоимость продукта
(сумма умножить на количество).
Сделайте класс Cart
. Данный класс
будет хранить список продуктов (объектов
класса Product
) в виде массива. Пусть
продукты хранятся в свойстве products
.
Реализуйте в классе Cart
метод add
для добавления продуктов.
Реализуйте в классе Cart
метод remove
для удаления продуктов. Метод должен принимать
параметром название удаляемого продукта.
Реализуйте в классе Cart
метод getTotalCost
,
который будет находить суммарную стоимость
продуктов.
Реализуйте в классе Cart
метод getTotalQuantity
,
который будет находить суммарное количество
продуктов (то есть сумму свойств quantity
всех продуктов).
Реализуйте в классе Cart
метод getAvgPrice
,
который будет находить среднюю стоимость
продуктов (суммарная стоимость делить на
количество всех продуктов).