<?php
class Employee{
public $name;
public $rate;
public $overtimerate;
public $overtime = array(); public $normaltime = array(); public function __construct($name,$rate) {
$this->name = $name;
$this->rate = $rate;
}
public function getTotalHoursWorked(){
}
public function getSalary(){
$hours = $this->getTotalHoursWorked();
$salary= (($this->getNormalHours()*$this->rate) + ($this->getOvertimeHours()*($this->rate*2)));
return $salary;
}
public function getShortName(){
while($this->name{$i}!=" "){
$i--;
if ($i<0) break;
}
$shortname = mb_substr($this->name, 0,$i-2 ); return $this->name= $shortname.".";
}
public function getNormalHours() {
foreach ($this->hours as $key => $value) {
if ($value <=40){
$this->normaltime[$key]= $value; }
else {$this->normaltime[$key]= $value -$this->getOvertimeHours() ;}
}
}
public function getOvertimeHours(){ //подсчет часов сверх нормы
foreach ($this->hours as $key => $value) {
if ($value >40){
$this->overtime[$key]= $value -40; }
else {$this->overtime[$key]= 0 ;}
}
}
}
function padRight($string, $length){
}
function padLeft($string, $length){
return $string;
}
$ivan = new Employee("Иван Иванов", 10);
$ivan ->hours = array(46,40,40,40); $peter = new Employee("Петр Петров", 8);
$ivan-> getShortName();
$peter-> getShortName();
$peter ->hours = array(40,10,40,50); $peter ->getOvertimeHours();
$employees = array($ivan,$peter);
$col1 = 30;
$col2 = 10;
echo"<pre>";
echo padRight("Сотрудник", $col1).
padLeft("Часы", $col2).
padLeft("Овертайм", $col2).
padLeft("Ставка", $col2).
padLeft("З/п", $col2). " <br>";
foreach ($employees as $employee) {
echo padRight($employee->name, $col1) .
padLeft($employee->getTotalHoursWorked(), $col2) .
padLeft($employee->getOvertimeHours(), $col2) .
padLeft($employee->rate, $col2) .
padLeft($employee->getSalary(), $col2) . "<br>" ;
}
?>
ICAgICAgICA8P3BocAogICAgY2xhc3MgRW1wbG95ZWV7CiAgICAgICAgcHVibGljICRuYW1lOwogICAgICAgIHB1YmxpYyAkcmF0ZTsKICAgICAgICBwdWJsaWMgJG92ZXJ0aW1lcmF0ZTsKICAgICAgICBwdWJsaWMgJGhvdXJzID0gYXJyYXkoKTsKICAgICAgICBwdWJsaWMgJG92ZXJ0aW1lID0gYXJyYXkoKTsKICAgICAgICBwdWJsaWMgJG5vcm1hbHRpbWUgPSBhcnJheSgpOwogICAgICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkbmFtZSwkcmF0ZSkgewogICAgICAgICAgICAkdGhpcy0+bmFtZSA9ICRuYW1lOwogICAgICAgICAgICAkdGhpcy0+cmF0ZSA9ICRyYXRlOwogICAgICAgICAgICAKICAgICAgICB9CiAgICAgICAgcHVibGljIGZ1bmN0aW9uIGdldFRvdGFsSG91cnNXb3JrZWQoKXsKICAgICAgICAgICAgcmV0dXJuIGFycmF5X3N1bSgkdGhpcy0+aG91cnMpOyAKICAgICAgICB9CiAgICAgICAKICAgICAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2FsYXJ5KCl7CiAgICAgICAgICAgICRob3VycyA9ICR0aGlzLT5nZXRUb3RhbEhvdXJzV29ya2VkKCk7CiAgICAgICAgICAgIAogICAgICAgICAgICAkc2FsYXJ5PSAoKCR0aGlzLT5nZXROb3JtYWxIb3VycygpKiR0aGlzLT5yYXRlKSArICgkdGhpcy0+Z2V0T3ZlcnRpbWVIb3VycygpKigkdGhpcy0+cmF0ZSoyKSkpOwogICAgICAgICAgICByZXR1cm4gJHNhbGFyeTsKICAgICAgICB9CiAgICAgICAgcHVibGljIGZ1bmN0aW9uIGdldFNob3J0TmFtZSgpewogICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgJGk9IG1iX3N0cmxlbigkdGhpcy0+bmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUoJHRoaXMtPm5hbWV7JGl9IT0iICIpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaS0tOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkaTwwKSBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICRzaG9ydG5hbWUgPSBtYl9zdWJzdHIoJHRoaXMtPm5hbWUsIDAsJGktMiApOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHRoaXMtPm5hbWU9ICRzaG9ydG5hbWUuIi4iOwogICAgICAgICB9CiAgICAgICAKICAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Tm9ybWFsSG91cnMoKSB7CiAgICAgICAgICBmb3JlYWNoICgkdGhpcy0+aG91cnMgYXMgJGtleSA9PiAkdmFsdWUpIHsKICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIGlmICgkdmFsdWUgPD00MCl7CiAgICAgICAgICAgICAgICAKICAgICAgICR0aGlzLT5ub3JtYWx0aW1lWyRrZXldPSAkdmFsdWU7ICAgfSAgCiAgICAgICAgZWxzZSB7JHRoaXMtPm5vcm1hbHRpbWVbJGtleV09ICR2YWx1ZSAtJHRoaXMtPmdldE92ZXJ0aW1lSG91cnMoKSA7fQogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgfQogICAgICAgIHJldHVybiBhcnJheV9zdW0oJHRoaXMtPm5vcm1hbHRpbWUpOwogICAgICAgIAogICAgICAgIAogICAgfQogICAgcHVibGljIGZ1bmN0aW9uICBnZXRPdmVydGltZUhvdXJzKCl7ICAgICAgICAgICAvL9C/0L7QtNGB0YfQtdGCINGH0LDRgdC+0LIg0YHQstC10YDRhSDQvdC+0YDQvNGLCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmhvdXJzIGFzICRrZXkgPT4gJHZhbHVlKSB7CiAgICAgICAgICAgIAogICAgICAgIAogICAgICAgICAgICBpZiAoJHZhbHVlID40MCl7CiAgICAgICAgICAgICAgICAKICAgICAgICR0aGlzLT5vdmVydGltZVska2V5XT0gJHZhbHVlIC00MDsgICB9ICAKICAgICAgICBlbHNlIHskdGhpcy0+b3ZlcnRpbWVbJGtleV09IDAgO30KICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgICAgIH0KICAgICAgICByZXR1cm4gYXJyYXlfc3VtKCR0aGlzLT5vdmVydGltZSk7CiAgICB9CiAgICAKICB9CiAgICAgICAgICAKICAgICAgIAogICAgICAgCiAgICAgIGZ1bmN0aW9uIHBhZFJpZ2h0KCRzdHJpbmcsICRsZW5ndGgpewogICAgICAgICAgICByZXR1cm4gJHN0cmluZy49IHN0cl9yZXBlYXQoIiAiLCAkbGVuZ3RoLW1iX3N0cmxlbigkc3RyaW5nKSk7CiAgICAgICAgICAgICAKICAgICAgfQogICAgICAgICAgICAgZnVuY3Rpb24gcGFkTGVmdCgkc3RyaW5nLCAkbGVuZ3RoKXsKJHN0cmluZyA9IHN0cl9yZXBlYXQoIiAiLCAkbGVuZ3RoLW1iX3N0cmxlbigkc3RyaW5nKSkgLiRzdHJpbmc7CiAgICAgICAgICAgICAgcmV0dXJuICRzdHJpbmc7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIAogICAgICAgIAogICAgICAgICRpdmFuID0gbmV3IEVtcGxveWVlKCLQmNCy0LDQvSDQmNCy0LDQvdC+0LIiLCAxMCk7CiAgICAgICAgJGl2YW4gLT5ob3VycyA9IGFycmF5KDQ2LDQwLDQwLDQwKTsKICAgICAgICAkcGV0ZXIgPSBuZXcgRW1wbG95ZWUoItCf0LXRgtGAINCf0LXRgtGA0L7QsiIsIDgpOwogICAgICAgICAgICRpdmFuLT4gZ2V0U2hvcnROYW1lKCk7CiAgICAgICAgICAkcGV0ZXItPiBnZXRTaG9ydE5hbWUoKTsKICAgICAgICAkcGV0ZXIgLT5ob3VycyA9IGFycmF5KDQwLDEwLDQwLDUwKTsKICAgICAgICAkcGV0ZXIgLT5nZXRPdmVydGltZUhvdXJzKCk7CiAgICAgICAgJGVtcGxveWVlcyA9IGFycmF5KCRpdmFuLCRwZXRlcik7CiAgICAgCiAgIAogICAgCiRjb2wxID0gMzA7CiRjb2wyID0gMTA7CmVjaG8iPHByZT4iOwogIGVjaG8gICBwYWRSaWdodCgi0KHQvtGC0YDRg9C00L3QuNC6IiwgJGNvbDEpLgogICAgICAgICAgICBwYWRMZWZ0KCLQp9Cw0YHRiyIsICRjb2wyKS4KICAgICAgICAgIHBhZExlZnQoItCe0LLQtdGA0YLQsNC50LwiLCAkY29sMikuCiAgICAgICAgICAgIHBhZExlZnQoItCh0YLQsNCy0LrQsCIsICRjb2wyKS4KICAgICAgICAgICAgcGFkTGVmdCgi0Jcv0L8iLCAkY29sMikuICIgPGJyPiI7CiAgCiAgZm9yZWFjaCAoJGVtcGxveWVlcyBhcyAkZW1wbG95ZWUpIHsKICAgIGVjaG8gcGFkUmlnaHQoJGVtcGxveWVlLT5uYW1lLCAkY29sMSkgLgogICAgICAgICBwYWRMZWZ0KCRlbXBsb3llZS0+Z2V0VG90YWxIb3Vyc1dvcmtlZCgpLCAkY29sMikgLgogICAgICAgICAgICAgcGFkTGVmdCgkZW1wbG95ZWUtPmdldE92ZXJ0aW1lSG91cnMoKSwgJGNvbDIpIC4KICAgICAgICAgcGFkTGVmdCgkZW1wbG95ZWUtPnJhdGUsICRjb2wyKSAuIAogICAgICAgICBwYWRMZWZ0KCRlbXBsb3llZS0+Z2V0U2FsYXJ5KCksICRjb2wyKSAuICI8YnI+IiA7CiAgIAogICAKfQoKICAgICAgICA/Pgo=