<?php
error_reporting(-1);
mb_internal_encoding('utf-8');
abstract class Department {
public $employees = array();
public $moneyConsumption;
public $coffeeConsumption;
public $reportsGeneration;
public $toogreeksPerPage;
public function name () {
}
}
class Purchasing extends Department {
public function __construct() {
$i = 0;
while ($i < 9){
$this->employees[] = new Manager(1, false);
$i = $i + 1;
}
}
}
class Sales extends Department {
}
class Marketing extends Department {
}
class Logistics extends Department {
}
abstract class Employee {
public $rank;
public $isBoss;
public $salary;
public $coffee;
public $reports;
public function countSalary($salary) {
if ($this->rank == 2) {
$salary = $salary * 1.25;
}elseif ($this->rank == 3) {
$salary = $salary * 1.5;
}
if ($this->isBoss == true) {
$salary = $salary * 1.5;
}
return $salary;
}
public function countCoffee($coffee) {
if ($this->isBoss == true) {
$coffee = $coffee * 2;
}
return $coffee;
}
public function countReports($reports) {
if ($this->isBoss == true) {
$reports = 0;
}
return $reports;
}
}
class Manager extends Employee {
public function __construct($rank, $isBoss) {
$salary = 500;
$coffee = 20;
$reports = 200;
$this->rank = $rank;
$this->isBoss = $isBoss;
$this->salary = $this->countSalary($salary);
$this->coffee = $this->countCoffee($coffee);
$this->reports = $this->countReports($reports);
}
}
class Marketer extends Employee {
public function __construct($rank, $isBoss) {
$salary = 400;
$coffee = 15;
$reports = 150;
$this->rank = $rank;
$this->isBoss = $isBoss;
$this->salary = $this->countSalary($salary);
$this->coffee = $this->countCoffee($coffee);
$this->reports = $this->countReports($reports);
}
}
class Engineer extends Employee {
public function __construct($rank, $isBoss) {
$salary = 200;
$coffee = 5;
$reports = 50;
$this->rank = $rank;
$this->isBoss = $isBoss;
$this->salary = $this->countSalary($salary);
$this->coffee = $this->countCoffee($coffee);
$this->reports = $this->countReports($reports);
}
}
class Analyst extends Employee {
public function __construct($rank, $isBoss) {
$salary = 800;
$coffee = 50;
$reports = 5;
$this->rank = $rank;
$this->isBoss = $isBoss;
$this->salary = $this->countSalary($salary);
$this->coffee = $this->countCoffee($coffee);
$this->reports = $this->countReports($reports);
}
}
$purchasing = new Purchasing;
var_dump($purchasing);
PD9waHAKZXJyb3JfcmVwb3J0aW5nKC0xKTsKbWJfaW50ZXJuYWxfZW5jb2RpbmcoJ3V0Zi04Jyk7CgphYnN0cmFjdCBjbGFzcyBEZXBhcnRtZW50IHsKICAgIHB1YmxpYyAkZW1wbG95ZWVzID0gYXJyYXkoKTsKICAgIHB1YmxpYyAkbW9uZXlDb25zdW1wdGlvbjsKICAgIHB1YmxpYyAkY29mZmVlQ29uc3VtcHRpb247CiAgICBwdWJsaWMgJHJlcG9ydHNHZW5lcmF0aW9uOwogICAgcHVibGljICR0b29ncmVla3NQZXJQYWdlOwogICAgCiAgICBwdWJsaWMgZnVuY3Rpb24gbmFtZSAoKSB7CiAgICAgICAgCiAgICB9Cn0KY2xhc3MgUHVyY2hhc2luZyBleHRlbmRzIERlcGFydG1lbnQgewogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkgewogICAgCSRpID0gMDsKICAgICAgICB3aGlsZSAoJGkgPCA5KXsKCSAgICAgICAgJHRoaXMtPmVtcGxveWVlc1tdID0gbmV3IE1hbmFnZXIoMSwgZmFsc2UpOwoJICAgICAgICAkaSA9ICRpICsgMTsKICAgICAgICB9CiAgICB9Cn0KY2xhc3MgU2FsZXMgZXh0ZW5kcyBEZXBhcnRtZW50IHsKICAgIAp9CmNsYXNzIE1hcmtldGluZyBleHRlbmRzIERlcGFydG1lbnQgewogICAgCn0KY2xhc3MgTG9naXN0aWNzIGV4dGVuZHMgRGVwYXJ0bWVudCB7CiAgICAKfQoKYWJzdHJhY3QgY2xhc3MgRW1wbG95ZWUgewogICAgcHVibGljICRyYW5rOwogICAgcHVibGljICRpc0Jvc3M7CiAgICBwdWJsaWMgJHNhbGFyeTsKICAgIHB1YmxpYyAkY29mZmVlOwogICAgcHVibGljICRyZXBvcnRzOwogICAgCiAgICBwdWJsaWMgZnVuY3Rpb24gY291bnRTYWxhcnkoJHNhbGFyeSkgewogICAgICAgIGlmICgkdGhpcy0+cmFuayA9PSAyKSB7CiAgICAgICAgICAgICRzYWxhcnkgPSAgJHNhbGFyeSAqIDEuMjU7CiAgICAgICAgfWVsc2VpZiAoJHRoaXMtPnJhbmsgPT0gMykgewogICAgICAgICAgICAkc2FsYXJ5ID0gJHNhbGFyeSAqIDEuNTsKICAgICAgICB9CiAgICAgICAgaWYgKCR0aGlzLT5pc0Jvc3MgPT0gdHJ1ZSkgewogICAgICAgICAgICAkc2FsYXJ5ID0gJHNhbGFyeSAqIDEuNTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRzYWxhcnk7CiAgICB9CiAgICBwdWJsaWMgZnVuY3Rpb24gY291bnRDb2ZmZWUoJGNvZmZlZSkgewogICAgICAgIGlmICgkdGhpcy0+aXNCb3NzID09IHRydWUpIHsKICAgICAgICAgICAgJGNvZmZlZSA9ICRjb2ZmZWUgKiAyOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJGNvZmZlZTsKICAgIH0KICAgIHB1YmxpYyBmdW5jdGlvbiBjb3VudFJlcG9ydHMoJHJlcG9ydHMpIHsKICAgICAgICBpZiAoJHRoaXMtPmlzQm9zcyA9PSB0cnVlKSB7CiAgICAgICAgICAgICRyZXBvcnRzID0gMDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRyZXBvcnRzOwogICAgfQp9CgpjbGFzcyBNYW5hZ2VyIGV4dGVuZHMgRW1wbG95ZWUgewogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRyYW5rLCAkaXNCb3NzKSB7CiAgICAJJHNhbGFyeSA9IDUwMDsKICAgIAkkY29mZmVlID0gMjA7CiAgICAJJHJlcG9ydHMgPSAyMDA7CiAgICAgICAgJHRoaXMtPnJhbmsgPSAkcmFuazsKICAgICAgICAkdGhpcy0+aXNCb3NzID0gJGlzQm9zczsKICAgICAgICAkdGhpcy0+c2FsYXJ5ID0gJHRoaXMtPmNvdW50U2FsYXJ5KCRzYWxhcnkpOwogICAgICAgICR0aGlzLT5jb2ZmZWUgPSAkdGhpcy0+Y291bnRDb2ZmZWUoJGNvZmZlZSk7CiAgICAgICAgJHRoaXMtPnJlcG9ydHMgPSAkdGhpcy0+Y291bnRSZXBvcnRzKCRyZXBvcnRzKTsKICAgIH0KfQpjbGFzcyBNYXJrZXRlciBleHRlbmRzIEVtcGxveWVlIHsKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkcmFuaywgJGlzQm9zcykgewogICAgCSRzYWxhcnkgPSA0MDA7CiAgICAJJGNvZmZlZSA9IDE1OwogICAgCSRyZXBvcnRzID0gMTUwOwogICAgICAgICR0aGlzLT5yYW5rID0gJHJhbms7CiAgICAgICAgJHRoaXMtPmlzQm9zcyA9ICRpc0Jvc3M7CiAgICAgICAgJHRoaXMtPnNhbGFyeSA9ICR0aGlzLT5jb3VudFNhbGFyeSgkc2FsYXJ5KTsKICAgICAgICAkdGhpcy0+Y29mZmVlID0gJHRoaXMtPmNvdW50Q29mZmVlKCRjb2ZmZWUpOwogICAgICAgICR0aGlzLT5yZXBvcnRzID0gJHRoaXMtPmNvdW50UmVwb3J0cygkcmVwb3J0cyk7CiAgICB9Cn0KY2xhc3MgRW5naW5lZXIgZXh0ZW5kcyBFbXBsb3llZSB7CiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHJhbmssICRpc0Jvc3MpIHsKICAgIAkkc2FsYXJ5ID0gMjAwOwogICAgCSRjb2ZmZWUgPSA1OwogICAgCSRyZXBvcnRzID0gNTA7CiAgICAgICAgJHRoaXMtPnJhbmsgPSAkcmFuazsKICAgICAgICAkdGhpcy0+aXNCb3NzID0gJGlzQm9zczsKICAgICAgICAkdGhpcy0+c2FsYXJ5ID0gJHRoaXMtPmNvdW50U2FsYXJ5KCRzYWxhcnkpOwogICAgICAgICR0aGlzLT5jb2ZmZWUgPSAkdGhpcy0+Y291bnRDb2ZmZWUoJGNvZmZlZSk7CiAgICAgICAgJHRoaXMtPnJlcG9ydHMgPSAkdGhpcy0+Y291bnRSZXBvcnRzKCRyZXBvcnRzKTsKICAgIH0KfQpjbGFzcyBBbmFseXN0IGV4dGVuZHMgRW1wbG95ZWUgewogICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRyYW5rLCAkaXNCb3NzKSB7CiAgICAJJHNhbGFyeSA9IDgwMDsKICAgIAkkY29mZmVlID0gNTA7CiAgICAJJHJlcG9ydHMgPSA1OwogICAgICAgICR0aGlzLT5yYW5rID0gJHJhbms7CiAgICAgICAgJHRoaXMtPmlzQm9zcyA9ICRpc0Jvc3M7CiAgICAgICAgJHRoaXMtPnNhbGFyeSA9ICR0aGlzLT5jb3VudFNhbGFyeSgkc2FsYXJ5KTsKICAgICAgICAkdGhpcy0+Y29mZmVlID0gJHRoaXMtPmNvdW50Q29mZmVlKCRjb2ZmZWUpOwogICAgICAgICR0aGlzLT5yZXBvcnRzID0gJHRoaXMtPmNvdW50UmVwb3J0cygkcmVwb3J0cyk7CiAgICB9Cn0KCiRwdXJjaGFzaW5nID0gbmV3IFB1cmNoYXNpbmc7CnZhcl9kdW1wKCRwdXJjaGFzaW5nKTs=