fork download
  1. <?php
  2.  
  3. abstract class Worker
  4. {
  5. public $department;
  6. public $rank;
  7. public $isChief;
  8. public $baseSalary;
  9. public $coffeeConsumptionRate;
  10. public $productionPerMount;
  11. public $productionType;
  12. public function __construct( $department, $rank, $chief )
  13. {
  14. $this->department = $department;
  15. $this->rank = $rank;
  16. $this->isChief = $chief;
  17. }
  18. public function getCoffeeConsumption()
  19. {
  20. if ( $this->isChief )
  21. {
  22. $coffee = $this->$coffeeConsumptionRate*1.5;
  23. }
  24. else
  25. {
  26. $coffee = $this->$coffeeConsumptionRate;
  27. }
  28. return $coffee;
  29. }
  30.  
  31. public function getSalary()
  32. {
  33. switch( $this->rank )
  34. {
  35. case 1:
  36. $salary = $this->$baseSalary;
  37. break;
  38. case 2:
  39. $salary = $this->$baseSalary*1.25;
  40. break;
  41. case 3:
  42. $salary = $this->$baseSalary*1.5;
  43. break;
  44. }
  45. if( $this->$isChief )
  46. {
  47. $salary*= 1.5;
  48. }
  49. return $salary;
  50. }
  51.  
  52. abstract function getInfos();
  53. }
  54.  
  55. class Manager extends Worker
  56. {
  57. public $coffeeConsumptionRate = 20;
  58. public $baseSalary = 500;
  59. public $productionPerMount = 200;
  60. public $productionType = "страница отчёта";
  61.  
  62. public function getInfos()
  63. {
  64. echo "Это менеджер ";
  65. echo $this->rank;
  66. echo " уровня из департамента ";
  67. echo $this->department;
  68. if ($this->isChief)
  69. {
  70. echo "\nОн начальник этого департамента.";
  71. }
  72. echo "\nПолучает ";
  73. echo $this->getSalary();
  74. echo " единиц валюты в месяц\n";
  75. echo "Выпивает ";
  76. echo $this->getCoffeeConsumption();
  77. echo " литров кофе в месяц\n";
  78. }
  79. }
  80.  
  81. $a = new Manager( "торговый", 2, true );
  82. $a->getInfos();
Runtime error #stdin #stdout #stderr 0.02s 52472KB
stdin
Standard input is empty
stdout
Это менеджер 2 уровня из департамента торговый
Он начальник этого департамента.
Получает 
stderr
PHP Notice:  Undefined variable: baseSalary in /home/zGdpVk/prog.php on line 39
PHP Fatal error:  Cannot access empty property in /home/zGdpVk/prog.php on line 39