@ 2017-04-02T05:01:07Z <?php
abstract class Employee {
public $baseSalary;
public $rank;
public $pages;
public $isBoss;
public $coffee;
function __construct($rank, $isBoss) {
$this->rank = $rank;
$this->isBoss = $isBoss;
$this->calculateSalary();
}
private function calculateSalary() {
$coef = 1;
switch ($this->rank) {
case 2:
$coef *= 1.25;
break;
case 3:
$coef *= 1.50;
break;
}
$coef = ($this->isBoss ? $coef *= 1.50 : $coef);
$this->salary = $this->baseSalary*$coef;
}
}
class Manager extends Employee {
public $rank = 1;
public $baseSalary = 500;
public $coffee = 20;
public $pages = 200;
public $boss = false;
public $salary = 0;
}
class Marketer extends Employee {
public $rank = 1;
public $baseSalary = 400;
public $coffee = 15;
public $pages = 150;
public $boss = false;
public $salary = 0;
}
class Analyst extends Employee {
public $rank = 1;
public $baseSalary = 800;
public $coffee = 50;
public $pages = 5;
public $boss = false;
public $salary = 0;
}
class Engineer extends Employee {
public $rank = 1;
public $baseSalary = 200;
public $coffee = 5;
public $pages = 50;
public $boss = false;
public $salary = 0;
}
class Department {
public $name;
public $employees = [];
function __construct($name) {
$this->name = $name;
}
function addEmployees($position, $amountEmloyees, $rank = 1, $isBoss = false) {
for ($i=0; $i < $amountEmloyees; $i++) {
$this->employees[] = new $position($rank, $isBoss);
}
}
function totalByDepartment() {
$arr = ['coffeeByDept' => 0, 'pagesByDept' => 0, 'salaryByDept' => 0];
foreach ($this->employees as $key => $value) {
$arr['coffeeByDept'] += $value->coffee;
$arr['pagesByDept'] += $value->pages;
$arr['salaryByDept'] += $value->salary;
}
$arr['amountEmloyees'] = count($this->employees);
$arr['salaryByPage'] = round($arr['salaryByDept'] / $arr['pagesByDept'], 2);
return $arr;
}
}
$DepartmentProcurement = new Department('Procurement');
$DepartmentProcurement->addEmployees('Manager', 9);
$DepartmentProcurement->addEmployees('Manager', 3, 2);
$DepartmentProcurement->addEmployees('Manager', 2, 3);
$DepartmentProcurement->addEmployees('Marketer', 2);
$DepartmentProcurement->addEmployees('Manager', 1, 2, true);
$DepartmentSales = new Department('Sales');
$DepartmentSales->addEmployees('Manager', 12);
$DepartmentSales->addEmployees('Marketer', 6);
$DepartmentSales->addEmployees('Analyst', 3);
$DepartmentSales->addEmployees('Analyst', 2, 2);
$DepartmentSales->addEmployees('Marketer', 1, 2, true);
$totalBySalesDept = $DepartmentSales->totalByDepartment();
$totalByProcurementDept = $DepartmentProcurement->totalByDepartment();
var_dump($totalByProcurementDept);
?>
Enable javascript to submit You have javascript disabled. You will not be able to edit any code.
Output for 7.0.0 - 7.0.20 , 7.1.0 - 7.1.33 , 7.2.0 - 7.2.33 , 7.3.0 - 7.3.33 , 7.4.0 - 7.4.33 , 8.0.0 - 8.0.30 , 8.1.0 - 8.1.28 , 8.2.0 - 8.2.18 , 8.3.0 - 8.3.4 , 8.3.6 array(5) {
["coffeeByDept"]=>
int(330)
["pagesByDept"]=>
int(3300)
["salaryByDept"]=>
float(9612.5)
["amountEmloyees"]=>
int(17)
["salaryByPage"]=>
float(2.91)
}
Output for 8.3.5 Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
array(5) {
["coffeeByDept"]=>
int(330)
["pagesByDept"]=>
int(3300)
["salaryByDept"]=>
float(9612.5)
["amountEmloyees"]=>
int(17)
["salaryByPage"]=>
float(2.91)
}
preferences:dark mode live preview
213.28 ms | 402 KiB | 213 Q