3v4l.org

run code in 300+ PHP versions simultaneously
<?php header("Content-Type: text/plain; charset=utf-8"); //b_internal_encoding('utf-8'); class Departament { public function __construct($name) //создаём департамент { $this->name = $name; } public function countEmployees($employees) //число сотрудников в департаменте { $countEmployees=0; foreach ($employees as $employee) { $countEmployees+= $employee->quantity; } echo "Число сотрудников: {$countEmployees}\n\n\n"; } public function getSalaryAllEmployees($employees) //посчитать зарплату всех сотрудников этого департамента { $totalSalary=0; foreach ($employees as $employee) { $totalSalary+=$employee->getSalary($employee) * $employee->quantity; } echo "Общая Зарплата по этому департаменту:".round($totalSalary)."\n"; return $totalSalary; } public function getCoffeAll($employees) //расходы на кофе по этому департаменту { $countCoffe = 0; foreach ($employees as $employee) { $countCoffe+= $employee->getCoffe($employee) * $employee->quantity; } echo "Кол-во выпитого коффе = {$countCoffe}\n"; return $countCoffe; } public function getPageAll($employees) //Число страниц документов и отчетов, которые производит этот департамент { $countPage = 0; foreach ($employees as $employee) { $countPage+= $employee->page * $employee->quantity; } echo "Всего страниц этого депа: {$countPage}\n"; return $countPage; } public function getAll($object, $employees) { $this->getSalaryAllEmployees($employees); $this->getCoffeAll($employees); $this->getPageAll($employees); $this->countEmployees($employees); } } class EmployeeGroup { public $position; public $coffe; public $page; public $rank; public $boss = false; public $baseSalary; public $quantity; public function getSalary($employee) //Посчитать зарплату отдельного работника с учётом ранга. Возвращает работник->$baseSalary. { switch($employee->rank) { case 1: $employee->baseSalary;//Ранг 1, зп по дефолту break; case 2: $employee->baseSalary+=($employee->baseSalary)*25/100; //Ранг 2, прибавляем к з/п 25% break; case 3: $employee->baseSalary+=($employee->baseSalary)*50/100;//Ранг 3, прибавляем к з/п 50% break; default: echo "Error. Switch, class EmployeeGroup, неверно задан ранг."; } If ($employee->boss == true) { $employee->baseSalary+=($employee->baseSalary)*50/100;//Босс, прибавляем к з/п 50%(+за ранг отдельно накидывается) } return $employee->baseSalary; } public function getCoffe($employee) //Сколько кофе выпили сотрудники. Босс пьёт в два раза больше. { If ($employee->boss == true) { $employee->coffe*=2; return $employee->coffe; } else { return $employee->coffe; } } //Создаём сотрудника: профессия, ранг, босс(bool), кофе, страницы, оклад, название депортамента. public function __construct($position, $rank, $boss, $coffe, $page, $baseSalary, $quantity) { $this->position = $position; $this->rank = $rank; $this->boss = $boss; $this->coffe = $coffe; $this->page = $page; $this->baseSalary = $baseSalary; $this->quantity = $quantity; } } $procurement = new Departament("Закупки");// Создаём департамент ЗАКУПОК. //Создаём сотрудника: профессия, ранг, босс(bool), кофе, страницы, оклад, кол-во сотрудников этого типа.. $procurementEmp[] = new EmployeeGroup("Менеджер", 1, false, 20, 200, 500, 9); //9 сотрудников ме1 $procurementEmp[] = new EmployeeGroup("Менеджер", 2, false, 20, 200, 500, 3); //3 сотрудника ме2 $procurementEmp[] = new EmployeeGroup("Менеджер", 3, false, 20, 200, 500, 2); //2 сотрудника ме3 $procurementEmp[] = new EmployeeGroup("Маркетолог", 1, false, 15, 150, 400, 2); //2 сотрудника ма1 $procurementEmp[] = new EmployeeGroup("Менеджер", 2, true, 20, 0, 500, 1); //босс ме2; $procurement->getAll($procurement, $procurementEmp); //получить все данные. $sales = new Departament("Продажи");// Создаём департамент Продажи. $salesEmp[] = new EmployeeGroup("Менеджер", 1, false, 20, 200, 500, 12); //12 сотрудников ме1 $salesEmp[] = new EmployeeGroup("Маркетолог", 1, false, 15, 150, 400, 6); //6 сотрудника ма1 $salesEmp[] = new EmployeeGroup("Аналитик", 1, false, 50, 5, 800, 3); //3 сотрудника ан1 $salesEmp[] = new EmployeeGroup("Аналитик", 2, false, 50, 5, 800, 2); //2 сотрудника ан2 $salesEmp[] = new EmployeeGroup("Маркетолог", 2, true, 15, 0, 400, 1); //босс ма2; $sales->getAll($sales, $salesEmp); //получить все данные. $advertising = new Departament("Реклама");// Создаём департамент Рекламы. $advertisingEmp[] = new EmployeeGroup("Маркетолог", 1, false, 15, 150, 400, 12); //12 сотрудника ма1 $advertisingEmp[] = new EmployeeGroup("Маркетолог", 2, false, 15, 150, 400, 10); //10 сотрудника ма2 $advertisingEmp[] = new EmployeeGroup("Менеджер", 1, false, 20, 200, 500, 8); //8 сотрудников ме1 $advertisingEmp[] = new EmployeeGroup("Инженер", 1, false, 5, 50, 200, 2); //2 ин1 $advertisingEmp[] = new EmployeeGroup("Маркетолог", 3, true, 15, 0, 400, 1); //босс ма3; $advertising->getAll($advertising, $advertisingEmp); //получить все данные. $logistics = new Departament("Логистика");// Создаём департамент Рекламы. $logisticsEmp[] = new EmployeeGroup("Менеджер", 1, false, 20, 200, 500, 13); //13 сотрудников ме1 $logisticsEmp[] = new EmployeeGroup("Менеджер", 2, false, 20, 200, 500, 5); //5 сотрудников ме2 $logisticsEmp[] = new EmployeeGroup("Инженер", 1, false, 5, 50, 200, 5); //5 ин1 $logisticsEmp[] = new EmployeeGroup("Менеджер", 1, false, 20, 200, 500, 1); //босс ме1 $logistics->getAll($logistics, $logisticsEmp); //получить все данные. ?>

preferences:
25.22 ms | 405 KiB | 5 Q