fork download
  1. <?php
  2.  
  3. class Organisation {
  4.  
  5. private $name;
  6. private $departments = [];
  7.  
  8. public function __construct($name) {
  9. $this->name = $name;
  10. }
  11.  
  12. public function addDepartment(Department $dep) {
  13.  
  14. if (!in_array($dep, $this->departments, true)) {
  15. $this->departments[] = $dep;
  16. }
  17.  
  18. }
  19.  
  20. public function getDepartments() {
  21. return $this->departments;
  22. }
  23.  
  24. }
  25.  
  26. class Department {
  27.  
  28. private $name;
  29.  
  30. public function __construct($name) {
  31. $this->name = $name;
  32. }
  33. }
  34.  
  35. class Names {
  36. public static function generateFullName() {
  37. $fLength = mt_rand(2, 6);
  38. $firstName = self::generateName($fLength);
  39.  
  40. $sLength = mt_rand(2, 6);
  41. $secondName = self::generateName($sLength);
  42.  
  43. return $firstName . " " . $secondName;
  44. }
  45.  
  46. private static function generateName($length) {
  47. $syllables = [
  48. 'а', 'и', 'у', 'о', 'е',
  49. 'на', 'ни','ну', 'но', 'не',
  50. 'ка', 'ки', 'ку', 'ко','ке',
  51. 'та', 'ти', 'ту', 'то', 'те',
  52. 'са', 'си', 'су', 'со', 'се',
  53. ];
  54. $name = '';
  55.  
  56. for ($i = 1; $i <= $length; $i++) {
  57. $name .= $syllables[mt_rand(0, count($syllables)-1)];
  58. }
  59. $first = mb_strtoupper(mb_substr($name, 0, 1));
  60. $caseTitleName = $first . mb_substr($name, 1);
  61.  
  62. return $caseTitleName;
  63. }
  64. }
  65.  
  66. abstract class Employee {
  67.  
  68. private $name;
  69. private $rang;
  70. private $leader;
  71. private $baseSalary;
  72. private $baseCoffe;
  73. Private $basePapers;
  74.  
  75. public function __construct($rang, $leader, $name) {
  76. $this->name = $name;
  77. $this->rang = $rang;
  78. $this->leader = $leader;
  79. }
  80.  
  81. public function setBaseSalary ($salary) {
  82. $this->$baseSalary = $salary;
  83. }
  84.  
  85. public function setBaseCoffe ($coffe) {
  86. $this->baseCoffe = $coffe;
  87. }
  88.  
  89. public function setBasePapers ($papers) {
  90. $this->basePapers = $papers;
  91. }
  92.  
  93. }
  94.  
  95.  
  96. class Manager extends Employee {
  97. public function __construct($rang, $leader, $name) {
  98. parent::__construct($rang, $leader, $name);
  99. $this->setBaseSalary(500);
  100. $this->setBasePapers(200);
  101. $this->setBaseCoffe(20);
  102. }
  103. }
  104.  
  105.  
  106. $vector = new Organisation('Вектор');
  107.  
  108. $dep1 = new Department('dep1');
  109. $vector->addDepartment($dep1);
  110. $vector->addDepartment($dep1);
  111. $dep2 = new Department('dep2');
  112. $vector->addDepartment($dep2);
  113.  
  114. echo "<pre>";
  115. //var_dump($vector->getDepartments());
  116.  
  117. $a = new Manager(1, false, Names::generateFullName());
  118.  
  119.  
Runtime error #stdin #stdout #stderr 0.01s 52488KB
stdin
Standard input is empty
stdout
<pre>
stderr
PHP Notice:  Undefined variable: baseSalary in /home/wbTlXd/prog.php on line 82
PHP Fatal error:  Cannot access empty property in /home/wbTlXd/prog.php on line 82