<?php
class Employee
{
public $name; // имя-фамилия
public $rate; // часовая ставка (сколько он получает тугриков за час работы)
public $hours = array(); // массив, содержащий отработанные часы по неделям
public function __construct($name, $rate)
{
// задаем имя и часовую ставку
$this->name = $name;
$this->rate = $rate;
}
/** Считает общее число отработанных часов */
public function getTotalHoursWorked()
{
// Просто складываем значения часов в массиве
}
/** Считает зарплату */
public function getSalary()
{
// Получаем число отработанных часов
$hours = $this->getTotalHoursWorked();
// и умножаем на часовую ставку
$salary = $hours * $this->rate;
return $salary;
}
}
function padRight($x, $y){
}
function padLeft($x, $y){
}
$ivan = new Employee("ivanov ivan", 10);
// name и rate заданы через конструктор, потому осталось лишь написать часы
$ivan->hours = array(40, 40, 40, 40); // Иван работает по 40 часов в неделю
$peter = new Employee("petrov petr", 8);
$peter->hours = array(40, 10, 40, 50); // Петр взял отгул и потому отработал меньше часов, // но в последнюю неделю решил поработать побольше
$employees = array($ivan, $peter);
$col1 = 15;
$col2 = $col4 = $col3 = 8;
// Заголовок таблицы
echo padRight('Employee', $col1) .
padLeft('Hour', $col2) .
padLeft('Rate', $col3) .
padLeft('Salary', $col4) . "\n";
// Сама таблица
$totalHours = 0;
$totalSalary = 0;
foreach ($employees as $employee) {
echo padRight($employee->name, $col1) .
padLeft($employee->getTotalHoursWorked(), $col2) .
padLeft($employee->rate, $col3) .
padLeft($employee->getSalary(), $col4) . "\n";
$totalHours += $employee->getTotalHoursWorked();
$totalSalary += $employee->getSalary();
}
echo padRight("All", $col1) .
padLeft($totalHours, $col2) .
padLeft(null, $col3) .
padLeft($totalSalary, $col4) . "\n";
PD9waHAKZXJyb3JfcmVwb3J0aW5nKC0xKTsKCmNsYXNzIEVtcGxveWVlICAgICAgICAgICAgIAp7CiAgICBwdWJsaWMgJG5hbWU7ICAgICAgICAgICAgICAgLy8g0LjQvNGPLdGE0LDQvNC40LvQuNGPCiAgICBwdWJsaWMgJHJhdGU7ICAgICAgICAgICAgICAgLy8g0YfQsNGB0L7QstCw0Y8g0YHRgtCw0LLQutCwICjRgdC60L7Qu9GM0LrQviDQvtC9INC/0L7Qu9GD0YfQsNC10YIg0YLRg9Cz0YDQuNC60L7QsiDQt9CwINGH0LDRgSDRgNCw0LHQvtGC0YspCiAgICBwdWJsaWMgJGhvdXJzID0gYXJyYXkoKTsgICAgLy8g0LzQsNGB0YHQuNCyLCDRgdC+0LTQtdGA0LbQsNGJ0LjQuSDQvtGC0YDQsNCx0L7RgtCw0L3QvdGL0LUg0YfQsNGB0Ysg0L/QviDQvdC10LTQtdC70Y/QvAogCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJG5hbWUsICRyYXRlKQogICAgewogICAgICAgIC8vINC30LDQtNCw0LXQvCDQuNC80Y8g0Lgg0YfQsNGB0L7QstGD0Y4g0YHRgtCw0LLQutGDCiAgICAgICAgJHRoaXMtPm5hbWUgPSAkbmFtZTsKICAgICAgICAkdGhpcy0+cmF0ZSA9ICRyYXRlOwogICAgfQogCiAgICAvKiog0KHRh9C40YLQsNC10YIg0L7QsdGJ0LXQtSDRh9C40YHQu9C+INC+0YLRgNCw0LHQvtGC0LDQvdC90YvRhSDRh9Cw0YHQvtCyICovCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VG90YWxIb3Vyc1dvcmtlZCgpCiAgICB7CiAgICAgICAgLy8g0J/RgNC+0YHRgtC+INGB0LrQu9Cw0LTRi9Cy0LDQtdC8INC30L3QsNGH0LXQvdC40Y8g0YfQsNGB0L7QsiDQsiDQvNCw0YHRgdC40LLQtQogICAgICAgIHJldHVybiBhcnJheV9zdW0oJHRoaXMtPmhvdXJzKTsKICAgIH0KIAogICAgLyoqINCh0YfQuNGC0LDQtdGCINC30LDRgNC/0LvQsNGC0YMgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRTYWxhcnkoKQogICAgewogICAgICAgIC8vINCf0L7Qu9GD0YfQsNC10Lwg0YfQuNGB0LvQviDQvtGC0YDQsNCx0L7RgtCw0L3QvdGL0YUg0YfQsNGB0L7QsgogICAgICAgICRob3VycyA9ICR0aGlzLT5nZXRUb3RhbEhvdXJzV29ya2VkKCk7CiAgICAgICAgLy8g0Lgg0YPQvNC90L7QttCw0LXQvCDQvdCwINGH0LDRgdC+0LLRg9GOINGB0YLQsNCy0LrRgwogICAgICAgICRzYWxhcnkgPSAkaG91cnMgKiAkdGhpcy0+cmF0ZTsKICAgICAgICByZXR1cm4gJHNhbGFyeTsKICAgIH0KICAgIAp9CgpmdW5jdGlvbiBwYWRSaWdodCgkeCwgJHkpewogICAgcmV0dXJuICR4LnN0cl9yZXBlYXQoIioiLCAkeSAtIHN0cmxlbigkeCkpOwp9CmZ1bmN0aW9uIHBhZExlZnQoJHgsICR5KXsKICAgIHJldHVybiBzdHJfcmVwZWF0KCclJywgJHkgLSBzdHJsZW4oJHgpKSAuICR4Owp9CiRpdmFuID0gbmV3IEVtcGxveWVlKCJpdmFub3YgaXZhbiIsIDEwKTsKLy8gbmFtZSDQuCByYXRlINC30LDQtNCw0L3RiyDRh9C10YDQtdC3INC60L7QvdGB0YLRgNGD0LrRgtC+0YAsINC/0L7RgtC+0LzRgyDQvtGB0YLQsNC70L7RgdGMINC70LjRiNGMINC90LDQv9C40YHQsNGC0Ywg0YfQsNGB0YsKJGl2YW4tPmhvdXJzID0gYXJyYXkoNDAsIDQwLCA0MCwgNDApOyAgIC8vINCY0LLQsNC9INGA0LDQsdC+0YLQsNC10YIg0L/QviA0MCDRh9Cw0YHQvtCyINCyINC90LXQtNC10LvRjgogCiRwZXRlciA9IG5ldyBFbXBsb3llZSgicGV0cm92IHBldHIiLCA4KTsKJHBldGVyLT5ob3VycyA9IGFycmF5KDQwLCAxMCwgNDAsIDUwKTsgIC8vINCf0LXRgtGAINCy0LfRj9C7INC+0YLQs9GD0Lsg0Lgg0L/QvtGC0L7QvNGDINC+0YLRgNCw0LHQvtGC0LDQuyDQvNC10L3RjNGI0LUg0YfQsNGB0L7QsiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDQvdC+INCyICDQv9C+0YHQu9C10LTQvdGO0Y4g0L3QtdC00LXQu9GOINGA0LXRiNC40Lsg0L/QvtGA0LDQsdC+0YLQsNGC0Ywg0L/QvtCx0L7Qu9GM0YjQtQogCiRlbXBsb3llZXMgPSBhcnJheSgkaXZhbiwgJHBldGVyKTsKIAokY29sMSA9IDE1OwokY29sMiA9ICRjb2w0ID0gJGNvbDMgPSA4OwoKLy8g0JfQsNCz0L7Qu9C+0LLQvtC6INGC0LDQsdC70LjRhtGLCgllY2hvIHBhZFJpZ2h0KCdFbXBsb3llZScsICRjb2wxKSAuCiAgICAgICAgIHBhZExlZnQoJ0hvdXInLCAkY29sMikgLiAKICAgICAgICAgcGFkTGVmdCgnUmF0ZScsICRjb2wzKSAuIAogICAgICAgICBwYWRMZWZ0KCdTYWxhcnknLCAkY29sNCkgLiAiXG4iOwogICAgICAgICAKLy8g0KHQsNC80LAg0YLQsNCx0LvQuNGG0LAKJHRvdGFsSG91cnMgPSAwOwokdG90YWxTYWxhcnkgPSAwOwpmb3JlYWNoICgkZW1wbG95ZWVzIGFzICRlbXBsb3llZSkgewogICAgZWNobyBwYWRSaWdodCgkZW1wbG95ZWUtPm5hbWUsICRjb2wxKSAuCiAgICAgICAgIHBhZExlZnQoJGVtcGxveWVlLT5nZXRUb3RhbEhvdXJzV29ya2VkKCksICRjb2wyKSAuIAogICAgICAgICBwYWRMZWZ0KCRlbXBsb3llZS0+cmF0ZSwgJGNvbDMpIC4gCiAgICAgICAgIHBhZExlZnQoJGVtcGxveWVlLT5nZXRTYWxhcnkoKSwgJGNvbDQpIC4gIlxuIjsKICAgICAgICAgJHRvdGFsSG91cnMgKz0gJGVtcGxveWVlLT5nZXRUb3RhbEhvdXJzV29ya2VkKCk7CiAgICAgICAgICR0b3RhbFNhbGFyeSArPSAkZW1wbG95ZWUtPmdldFNhbGFyeSgpOwp9CmVjaG8gcGFkUmlnaHQoIkFsbCIsICRjb2wxKSAuCiAgICAgICAgIHBhZExlZnQoJHRvdGFsSG91cnMsICRjb2wyKSAuIAogICAgICAgICBwYWRMZWZ0KG51bGwsICRjb2wzKSAuIAogICAgICAgICBwYWRMZWZ0KCR0b3RhbFNhbGFyeSwgJGNvbDQpIC4gIlxuIjs=