fork download
  1. <?php
  2.  
  3.  
  4.  
  5. class Employee
  6. {
  7. public $name; // имя-фамилия
  8. public $rate; // часовая ставка (сколько он получает тугриков за час работы)
  9. public $hours = array(); // массив, содержащий отработанные часы по неделям
  10.  
  11. public function __construct($name, $rate)
  12. {
  13. // задаем имя и часовую ставку
  14. $this->name = $name;
  15. $this->rate = $rate;
  16. }
  17.  
  18. /** Считает общее число отработанных часов */
  19. public function getTotalHoursWorked()
  20. {
  21. // Просто складываем значения часов в массиве
  22. return array_sum($this->hours);
  23. }
  24.  
  25. /** Считает зарплату */
  26. public function getSalary()
  27. {
  28. // Получаем число отработанных часов
  29. $hours = $this->getTotalHoursWorked();
  30. // и умножаем на часовую ставку
  31. $salary = $hours * $this->rate;
  32. return $salary;
  33. }
  34. }
  35. function padLeft($string, $length) { //Добавляет пробелы слева.
  36. $lengthOfString = mb_strlen($string);
  37. if ($lengthOfString < $length) {
  38. $add = $length - $lengthOfString;
  39. return str_pad($string, $add, ' ' , STR_PAD_LEFT);
  40. }
  41. else {
  42. return $string;
  43. }
  44. }
  45. function padRight($string, $length) { //Добавляет пробелы справа
  46. $lengthOfString = mb_strlen($string);
  47. if ($lengthOfString < $length) {
  48. $add = $length - $lengthOfString;
  49. return str_pad($string, $add, ' ' , STR_PAD_RIGHT);
  50. }
  51. else {
  52. return $string;
  53. }
  54. }
  55.  
  56.  
  57. $ivan = new Employee("Иванов Иван", 10);
  58. // name и rate заданы через конструктор, потому осталось лишь написать часы
  59. $ivan->hours = array(40, 40, 40, 40); // Иван работает по 40 часов в неделю
  60.  
  61. $peter = new Employee("Петров Петр", 8);
  62. $peter->hours = array(40, 10, 40, 50); // Петр взял отгул и потому отработал меньше часов,
  63. // но в последнюю неделю решил поработать побольше
  64. $employees = array($ivan, $peter);
  65.  
  66. $col1 = 30;
  67. $col2 = 12;
  68. $col3 = 12;
  69. $col4 = 12;
  70. // Вывести все в таблице
  71. // Заголовок таблицы
  72. echo padRight("Сотрудник", $col1) .
  73. padLeft("Часы", $col2) .
  74. padLeft("Ставка", $col3) .
  75. padLeft("З/п", $col4) . "\n\n";
  76.  
  77. // Сама таблица
  78. foreach ($employees as $employee) {
  79. echo padRight($employee->name, $col1) .
  80. padLeft($employee->getTotalHoursWorked(), $col2) .
  81. padLeft($employee->rate, $col3) .
  82. padLeft($employee->getSalary(), $col4) . "\n";
  83. }
  84. ?>
Success #stdin #stdout 0.01s 20568KB
stdin
Standard input is empty
stdout
Сотрудник   ЧасыСтавка    З/п

Иванов Иван      160        10    1600
Петров Петр      140          8    1120