<?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 ) ;
foreach ( $employees as $employee ) {
$allRates += $employee -> rate ;
$totalHours += $employee -> getTotalHoursWorked ( ) ;
$totalOverdraft += $employee -> isOverdrafted ( ) ;
$totalSalary += $employee -> getTotalPayment ( ) ;
}
$avarageRate = $allRates / count ( $employees ) ; $avarageHours = $totalHours / count ( $employees ) ; $avarageOverdraft = $totalOverdraft / count ( $employees ) ; $avarageSalary = round ( $totalSalary / count ( $employees ) ) ;
$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 / 2 , $col4 ) .
padLeft( $employee -> getTotalPayment ( ) / 2 , $col5 ) . "\n " ;
}
echo padRight( "Total:" , $col1 ) .
padLeft( $totalHours , $col2 ) .
padLeft( $totalOverdraft , $col3 ) .
padLeft( " " , $col4 ) .
padLeft( $totalSalary , $col5 ) . "\n " ;
echo padRight( "Avarage:" , $col1 ) .
padLeft( $avarageHours , $col2 ) .
padLeft( $avarageOverdraft , $col3 ) .
padLeft( $avarageRate , $col4 ) .
padLeft( $avarageSalary , $col5 ) . "\n " ;
PD9waHAKIApjbGFzcyBFbXBsb3llZSAKewogCiAgICBwdWJsaWMgJG5hbWU7CiAgICBwdWJsaWMgJHJhdGU7CiAgICBwdWJsaWMgJGhvdXJzID0gYXJyYXkoKTsKIAogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRuYW1lLCAkcmF0ZSkKICAgIHsKIAogICAgICAgICR0aGlzLT5uYW1lID0gJG5hbWU7CiAgICAgICAgJHRoaXMtPnJhdGUgPSAkcmF0ZTsKIAogICAgfQogCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VG90YWxIb3Vyc1dvcmtlZCgpCiAgICB7CiAKICAgICAgICByZXR1cm4gYXJyYXlfc3VtKCR0aGlzLT5ob3Vycyk7CiAKICAgIH0KIAogICAgcHVibGljIGZ1bmN0aW9uIGlzT3ZlcmRyYWZ0ZWQoKQogICAgewogICAgICAgICR0b3RhbE92ZXJkcmFmdCA9IDA7CiAgICAgICAgJG92ZXJkcmFmdCA9IDA7CiAgICAgICAgZm9yZWFjaCgkdGhpcy0+aG91cnMgYXMgJGhvdXIpIHsKICAgICAgICAgIGlmKCRob3VyID4gNDApIHsKICAgICAgICAgICAgICAkb3ZlcmRyYWZ0ID0gJGhvdXIgLSA0MDsKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgJG92ZXJkcmFmdCA9IDA7CiAgICAgICAgICB9IAogICAgICAgICAgICAgICR0b3RhbE92ZXJkcmFmdCArPSAkb3ZlcmRyYWZ0OwogICAgICAgIH0KICAgICAgICByZXR1cm4gJHRvdGFsT3ZlcmRyYWZ0OwogICAgfQogCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VG90YWxQYXltZW50KCkKICAgIHsKIAogICAgICAgICRob3VycyA9ICR0aGlzLT5nZXRUb3RhbEhvdXJzV29ya2VkKCk7CiAgICAgICAgJHNhbGFyeSA9ICgkaG91cnMgLSAkdGhpcy0+aXNPdmVyZHJhZnRlZCgpKSAqICR0aGlzLT5yYXRlICsgKCR0aGlzLT5pc092ZXJkcmFmdGVkKCkgKiAoJHRoaXMtPnJhdGUgKj0gMikpOwogICAgICAgIHJldHVybiAkc2FsYXJ5OwogCiAgICB9CiAgICAKIAogICAgcHVibGljIGZ1bmN0aW9uIG5hbWVUcmltbWVyKCl7CiAgICAgICAgJGZpcnN0TGV0dGVyID0gc3Vic3RyKCR0aGlzLT5uYW1lLCAwLCAxKTsKICAgICAgICAkcmVnZXhwID0gJy8oW2EtekEtWl0pKiAvJzsKICAgICAgICAkcmVwbGFjZW1lbnQgPSAkZmlyc3RMZXR0ZXI7IAogICAgICAgICR0cmltbWVkTmFtZSA9IHByZWdfcmVwbGFjZSgkcmVnZXhwLCAgJHJlcGxhY2VtZW50IC4gIi4gIiwgJHRoaXMtPm5hbWUpOwogICAgICAgIHJldHVybiAkdHJpbW1lZE5hbWU7CiAKICAgIH0KfQogCmZ1bmN0aW9uIHBhZFJpZ2h0KCRzdHJpbmcsICRsZW5ndGgpCnsgCiAKICAgICRzdHJpbmcgPSBzdHJfcGFkICggJHN0cmluZywgJGxlbmd0aCwgIiAiICk7CiAgICByZXR1cm4gJHN0cmluZzsKIAp9CiAKZnVuY3Rpb24gcGFkTGVmdCgkc3RyaW5nLCAkbGVuZ3RoKQp7CiAKICAgICAkc3RyaW5nID0gc3RyX3BhZCAoICRzdHJpbmcsICRsZW5ndGgsICIgIiwgU1RSX1BBRF9MRUZUICk7CiAgICAgcmV0dXJuICRzdHJpbmc7CiAKfQogCiRwZXR5YSA9IG5ldyBFbXBsb3llZSgiUGV0ZXIgU3VuYmVyZyIsIDEwKTsKJHBldHlhLT5ob3VycyA9IGFycmF5KDQwLCA1MCwgMTAsIDQwKTsKIAokdG9tID0gbmV3IEVtcGxveWVlKCJUb21hcyBIb2xsb3dheSIsIDgpOwokdG9tLT5ob3VycyA9IGFycmF5KDQwLCA0MCwgNDAsIDQwKTsKIAokc2F5bW9uID0gbmV3IEVtcGxveWVlKCJTYXltb24gU21pdCIsIDE1KTsKJHNheW1vbi0+aG91cnMgPSBhcnJheSg1MCwgNjAsIDUwLCA1MCk7CiAKJGVtcGxveWVlcyA9IGFycmF5KCRwZXR5YSwgJHRvbSwgJHNheW1vbik7CiAKZm9yZWFjaCAoJGVtcGxveWVlcyBhcyAkZW1wbG95ZWUpIHsKICAgICRhbGxSYXRlcyArPSAkZW1wbG95ZWUtPnJhdGU7IAogICAgJHRvdGFsSG91cnMgKz0gJGVtcGxveWVlLT5nZXRUb3RhbEhvdXJzV29ya2VkKCk7CiAgICAkdG90YWxPdmVyZHJhZnQgKz0gJGVtcGxveWVlLT5pc092ZXJkcmFmdGVkKCk7CiAgICAkdG90YWxTYWxhcnkgKz0gJGVtcGxveWVlLT5nZXRUb3RhbFBheW1lbnQoKTsgCn0gCgokYXZhcmFnZVJhdGUgPSAkYWxsUmF0ZXMgLyBjb3VudCgkZW1wbG95ZWVzKTsKJGF2YXJhZ2VIb3VycyA9ICR0b3RhbEhvdXJzIC8gY291bnQoJGVtcGxveWVlcyk7CiRhdmFyYWdlT3ZlcmRyYWZ0ID0gJHRvdGFsT3ZlcmRyYWZ0IC8gY291bnQoJGVtcGxveWVlcyk7CiRhdmFyYWdlU2FsYXJ5ID0gcm91bmQoJHRvdGFsU2FsYXJ5ICAvIGNvdW50KCRlbXBsb3llZXMpKTsKCiRjb2wxID0gMzA7CiRjb2wyID0gODsKJGNvbDMgPSAxMDsKJGNvbDQgPSA4OwokY29sNSA9IDg7CiAKIAogICAgZWNobyBwYWRSaWdodCgiTmFtZSIsICRjb2wxKSAuCiAgICAgICAgIHBhZExlZnQoIkhvdXJzIiwgJGNvbDIpIC4KICAgICAgICAgcGFkTGVmdCgiT3ZlcmRyYWZ0IiwgJGNvbDMpIC4KICAgICAgICAgcGFkTGVmdCgiUmF0ZSIsICRjb2w0KSAuIAogICAgICAgICBwYWRMZWZ0KCJTYWxhcnkiLCAkY29sNSkgLiAiXG4iOwplY2hvIHN0cl9yZXBlYXQoIl8iLCA2NCkgLiAiXG4iOwogCmZvcmVhY2ggKCRlbXBsb3llZXMgYXMgJGVtcGxveWVlKSB7IAogCiAgICBlY2hvIHBhZFJpZ2h0KCRlbXBsb3llZS0+bmFtZVRyaW1tZXIoKSwgJGNvbDEpIC4KICAgICAgICAgcGFkTGVmdCgkZW1wbG95ZWUtPmdldFRvdGFsSG91cnNXb3JrZWQoKSwgJGNvbDIpIC4KICAgICAgICAgcGFkTGVmdCgkZW1wbG95ZWUtPmlzT3ZlcmRyYWZ0ZWQoKSwgJGNvbDMpIC4KICAgICAgICAgcGFkTGVmdCgkZW1wbG95ZWUtPnJhdGUgLyAyLCAkY29sNCkgLiAKICAgICAgICAgcGFkTGVmdCgkZW1wbG95ZWUtPmdldFRvdGFsUGF5bWVudCgpIC8gMiwgJGNvbDUpIC4gIlxuIjsgICAgICAKICAgICAgICAKfQogCmVjaG8gc3RyX3JlcGVhdCgiXyIsIDY0KSAuICJcbiI7CiAKZWNobyBwYWRSaWdodCgiVG90YWw6IiwgJGNvbDEpIC4KICAgICAgICAgcGFkTGVmdCgkdG90YWxIb3VycywgJGNvbDIpIC4KICAgICAgICAgcGFkTGVmdCgkdG90YWxPdmVyZHJhZnQsICRjb2wzKSAuCiAgICAgICAgIHBhZExlZnQoIiAiLCAkY29sNCkgLiAKICAgICAgICAgcGFkTGVmdCgkdG90YWxTYWxhcnksICRjb2w1KSAuICJcbiI7CgplY2hvIHN0cl9yZXBlYXQoIl8iLCA2NCkgLiAiXG4iOwoKZWNobyBwYWRSaWdodCgiQXZhcmFnZToiLCAkY29sMSkgLgogICAgICAgICBwYWRMZWZ0KCRhdmFyYWdlSG91cnMsICRjb2wyKSAuCiAgICAgICAgIHBhZExlZnQoJGF2YXJhZ2VPdmVyZHJhZnQsICRjb2wzKSAuCiAgICAgICAgIHBhZExlZnQoJGF2YXJhZ2VSYXRlLCAkY29sNCkgLiAKICAgICAgICAgcGFkTGVmdCgkYXZhcmFnZVNhbGFyeSwgJGNvbDUpIC4gIlxuIjsKCgoK