<?php
class Employee
{
public $name;
public $rate;
public function __construct($name, $rate)
{
$this->name = $name;
$this->rate = $rate;
}
public function getTotalHoursWorked()
{
}
public function isOverdrafted()
{
$totalOverdraft = 0;
$overdraft = 0;
foreach($this->hours as $hour) {
if($hour > 40) {
$overdraft = $hour - 40;
} else {
$overdraft = 0;
}
$totalOverdraft += $overdraft;
}
return $totalOverdraft;
}
public function getTotalPayment()
{
$hours = $this->getTotalHoursWorked();
$salary = ($hours - $this->isOverdrafted()) * $this->rate + ($this->isOverdrafted() * ($this->rate *= 2));
return $salary;
}
public function nameTrimmer(){
$firstLetter = substr($this->name, 0, 1); $regexp = '/([a-zA-Z])* /';
$replacement = $firstLetter;
$trimmedName = preg_replace($regexp, $replacement . ". ", $this->name); return $trimmedName;
}
}
function padRight($string, $length)
{
$string = str_pad ( $string, $length, " " ); return $string;
}
function padLeft($string, $length)
{
$string = str_pad ( $string, $length, " ", STR_PAD_LEFT
); return $string;
}
$petya = new Employee("Peter Sunberg", 10);
$petya->hours = array(40, 50, 10, 40);
$tom = new Employee("Tomas Holloway", 8);
$tom->hours = array(40, 40, 40, 40);
$saymon = new Employee("Saymon Smit", 15);
$saymon->hours = array(50, 60, 50, 50);
$employees = array($petya, $tom, $saymon);
$col1 = 30;
$col2 = 8;
$col3 = 10;
$col4 = 8;
$col5 = 8;
echo padRight("Name", $col1) .
padLeft("Hours", $col2) .
padLeft("Overdraft", $col3) .
padLeft("Rate", $col4) .
padLeft("Salary", $col5) . "\n";
foreach ($employees as $employee) {
echo padRight($employee->nameTrimmer(), $col1) .
padLeft($employee->getTotalHoursWorked(), $col2) .
padLeft($employee->isOverdrafted(), $col3) .
padLeft($employee->rate, $col4) .
padLeft($employee->getTotalPayment(), $col5) . "\n";
}
PD9waHAKCmNsYXNzIEVtcGxveWVlIAp7CgogICAgcHVibGljICRuYW1lOwogICAgcHVibGljICRyYXRlOwogICAgcHVibGljICRob3VycyA9IGFycmF5KCk7CiAgICAKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkbmFtZSwgJHJhdGUpCiAgICB7CiAgICAgICAgCiAgICAgICAgJHRoaXMtPm5hbWUgPSAkbmFtZTsKICAgICAgICAkdGhpcy0+cmF0ZSA9ICRyYXRlOwogICAgICAgIAogICAgfQogICAgCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VG90YWxIb3Vyc1dvcmtlZCgpCiAgICB7CiAgICAKICAgICAgICByZXR1cm4gYXJyYXlfc3VtKCR0aGlzLT5ob3Vycyk7CiAgICAKICAgIH0KICAgIAogICAgcHVibGljIGZ1bmN0aW9uIGlzT3ZlcmRyYWZ0ZWQoKQogICAgewogICAgICAgICR0b3RhbE92ZXJkcmFmdCA9IDA7CiAgICAgICAgJG92ZXJkcmFmdCA9IDA7CiAgICAgICAgZm9yZWFjaCgkdGhpcy0+aG91cnMgYXMgJGhvdXIpIHsKICAgICAgICAgIGlmKCRob3VyID4gNDApIHsKICAgICAgICAgICAgICAkb3ZlcmRyYWZ0ID0gJGhvdXIgLSA0MDsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgJG92ZXJkcmFmdCA9IDA7CiAgICAgICAgICB9IAogICAgICAgICAgICAgICR0b3RhbE92ZXJkcmFmdCArPSAkb3ZlcmRyYWZ0OwogICAgICAgIH0KICAgICAgICByZXR1cm4gJHRvdGFsT3ZlcmRyYWZ0OwogICAgfQogICAgCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VG90YWxQYXltZW50KCkKICAgIHsKICAgIAogICAgICAgICRob3VycyA9ICR0aGlzLT5nZXRUb3RhbEhvdXJzV29ya2VkKCk7CiAgICAgICAgJHNhbGFyeSA9ICgkaG91cnMgLSAkdGhpcy0+aXNPdmVyZHJhZnRlZCgpKSAqICR0aGlzLT5yYXRlICsgKCR0aGlzLT5pc092ZXJkcmFmdGVkKCkgKiAoJHRoaXMtPnJhdGUgKj0gMikpOwogICAgICAgIHJldHVybiAkc2FsYXJ5OwogICAgICAgIAogICAgfQogICAgCiAgICBwdWJsaWMgZnVuY3Rpb24gbmFtZVRyaW1tZXIoKXsKICAgICAgICAkZmlyc3RMZXR0ZXIgPSBzdWJzdHIoJHRoaXMtPm5hbWUsIDAsIDEpOwogICAgICAgICRyZWdleHAgPSAnLyhbYS16QS1aXSkqIC8nOwogICAgICAgICRyZXBsYWNlbWVudCA9ICRmaXJzdExldHRlcjsgCiAgICAgICAgJHRyaW1tZWROYW1lID0gcHJlZ19yZXBsYWNlKCRyZWdleHAsICAkcmVwbGFjZW1lbnQgLiAiLiAiLCAkdGhpcy0+bmFtZSk7CiAgICAgICAgcmV0dXJuICR0cmltbWVkTmFtZTsKICAgIAogICAgfQp9CgpmdW5jdGlvbiBwYWRSaWdodCgkc3RyaW5nLCAkbGVuZ3RoKQp7IAogICAgICAKICAgICRzdHJpbmcgPSBzdHJfcGFkICggJHN0cmluZywgJGxlbmd0aCwgIiAiICk7CiAgICByZXR1cm4gJHN0cmluZzsKICAgIAp9CgpmdW5jdGlvbiBwYWRMZWZ0KCRzdHJpbmcsICRsZW5ndGgpCnsKICAgIAogICAgICRzdHJpbmcgPSBzdHJfcGFkICggJHN0cmluZywgJGxlbmd0aCwgIiAiLCBTVFJfUEFEX0xFRlQgKTsKICAgIHJldHVybiAkc3RyaW5nOwogICAgCn0KCgoKCgokcGV0eWEgPSBuZXcgRW1wbG95ZWUoIlBldGVyIFN1bmJlcmciLCAxMCk7CiRwZXR5YS0+aG91cnMgPSBhcnJheSg0MCwgNTAsIDEwLCA0MCk7CgokdG9tID0gbmV3IEVtcGxveWVlKCJUb21hcyBIb2xsb3dheSIsIDgpOwokdG9tLT5ob3VycyA9IGFycmF5KDQwLCA0MCwgNDAsIDQwKTsKCiRzYXltb24gPSBuZXcgRW1wbG95ZWUoIlNheW1vbiBTbWl0IiwgMTUpOwokc2F5bW9uLT5ob3VycyA9IGFycmF5KDUwLCA2MCwgNTAsIDUwKTsKCiRlbXBsb3llZXMgPSBhcnJheSgkcGV0eWEsICR0b20sICRzYXltb24pOwoKCgokY29sMSA9IDMwOwokY29sMiA9IDg7CiRjb2wzID0gMTA7CiRjb2w0ID0gODsKJGNvbDUgPSA4OwoKZWNobyBwYWRSaWdodCgiTmFtZSIsICRjb2wxKSAuCiAgICAgICAgIHBhZExlZnQoIkhvdXJzIiwgJGNvbDIpIC4KICAgICAgICAgcGFkTGVmdCgiT3ZlcmRyYWZ0IiwgJGNvbDMpIC4KICAgICAgICAgcGFkTGVmdCgiUmF0ZSIsICRjb2w0KSAuIAogICAgICAgICBwYWRMZWZ0KCJTYWxhcnkiLCAkY29sNSkgLiAiXG4iOwplY2hvIHN0cl9yZXBlYXQoIl8iLCA2NCkgLiAiXG4iOwoKZm9yZWFjaCAoJGVtcGxveWVlcyBhcyAkZW1wbG95ZWUpIHsKICAgIGVjaG8gcGFkUmlnaHQoJGVtcGxveWVlLT5uYW1lVHJpbW1lcigpLCAkY29sMSkgLgogICAgICAgICBwYWRMZWZ0KCRlbXBsb3llZS0+Z2V0VG90YWxIb3Vyc1dvcmtlZCgpLCAkY29sMikgLgogICAgICAgICBwYWRMZWZ0KCRlbXBsb3llZS0+aXNPdmVyZHJhZnRlZCgpLCAkY29sMykgLgogICAgICAgICBwYWRMZWZ0KCRlbXBsb3llZS0+cmF0ZSwgJGNvbDQpIC4gCiAgICAgICAgIHBhZExlZnQoJGVtcGxveWVlLT5nZXRUb3RhbFBheW1lbnQoKSwgJGNvbDUpIC4gIlxuIjsKfQoKZWNobyBzdHJfcmVwZWF0KCJfIiwgNjQpOwoK