<?php
include ( 'classes.php' ) ;
/**
* essential class Department's declaration in classes.php:
* class Department {
* protected string $name;
* protected array $staff;
*
* public function __construct($name) {
* $this->name = $name;
* }
*
* public function addToStaff($employee) {
* $this->staff[] = $employee;
* }
* }
*/
$input = [
'Purchasing' => [
[ 9 , Employee:: MANAGER , 1 ] ,
[ 3 , Employee:: MANAGER , 2 ] ,
[ 2 , Employee:: MANAGER , 3 ] ,
[ 2 , Employee:: MARKETER , 1 ] ,
[ 1 , Employee:: MANAGER , 2 , true ]
] ,
'Sales' => [
[ 12 , Employee:: MANAGER , 1 ] ,
[ 6 , Employee:: MARKETER , 1 ] ,
[ 3 , Employee:: ANALYST , 1 ] ,
[ 2 , Employee:: ANALYST , 2 ] ,
[ 1 , Employee:: MARKETER , 2 , true ]
] ,
'Advertising' => [
[ 15 , Employee:: MARKETER , 1 ] ,
[ 10 , Employee:: MARKETER , 2 ] ,
[ 8 , Employee:: MANAGER , 1 ] ,
[ 2 , Employee:: ENGINEER , 1 ] ,
[ 1 , Employee:: MARKETER , 3 , true ]
] ,
'Logistics' => [
[ 13 , Employee:: MANAGER , 1 ] ,
[ 5 , Employee:: MANAGER , 2 ] ,
[ 5 , Employee:: ENGINEER , 1 ] ,
[ 1 , Employee:: MANAGER , 1 , true ]
]
] ;
$depts = [ ] ;
foreach ( $input as $dept => $staff ) {
$currentDept = new Department( $dept ) ;
foreach ( $staff as $employeeGroup ) {
$quantity = $employeeGroup [ 0 ] ;
$type = $employeeGroup [ 1 ] ;
$grade = $employeeGroup [ 2 ] ;
$chief = isset ( $employeeGroup [ 3 ] ) ?
true : false ; for ( $c = 0 ; $c < $quantity ; $c ++ ) {
$employeeObject = new $type ( $grade , $chief ) ;
$currentDept -> addToStaff ( $employeeObject ) ;
}
}
$depts [ ] = $currentDept ;
}
PD9waHAKCmluY2x1ZGUoJ2NsYXNzZXMucGhwJyk7CgovKioKICogZXNzZW50aWFsIGNsYXNzIERlcGFydG1lbnQncyBkZWNsYXJhdGlvbiBpbiBjbGFzc2VzLnBocDoKICogY2xhc3MgRGVwYXJ0bWVudCB7CiAqIHByb3RlY3RlZCBzdHJpbmcgJG5hbWU7CiAqIHByb3RlY3RlZCBhcnJheSAkc3RhZmY7CiAqCiAqIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkbmFtZSkgewogKiAgCSR0aGlzLT5uYW1lID0gJG5hbWU7CiAqIH0KICoKICogcHVibGljIGZ1bmN0aW9uIGFkZFRvU3RhZmYoJGVtcGxveWVlKSB7CiAqCQkkdGhpcy0+c3RhZmZbXSA9ICRlbXBsb3llZTsKICogfQogKiB9CiAqLwoKJGlucHV0ID0gWwoJJ1B1cmNoYXNpbmcnID0+IFsKCQlbOSwgRW1wbG95ZWU6Ok1BTkFHRVIsIDFdLAoJCVszLCBFbXBsb3llZTo6TUFOQUdFUiwgMl0sCgkJWzIsIEVtcGxveWVlOjpNQU5BR0VSLCAzXSwKCQlbMiwgRW1wbG95ZWU6Ok1BUktFVEVSLCAxXSwKCQlbMSwgRW1wbG95ZWU6Ok1BTkFHRVIsIDIsIHRydWVdCgldLAoKCSdTYWxlcycgPT4gWwoJCVsxMiwgRW1wbG95ZWU6Ok1BTkFHRVIsIDFdLAoJCVs2LCBFbXBsb3llZTo6TUFSS0VURVIsIDFdLAoJCVszLCBFbXBsb3llZTo6QU5BTFlTVCwgMV0sCgkJWzIsIEVtcGxveWVlOjpBTkFMWVNULCAyXSwKCQlbMSwgRW1wbG95ZWU6Ok1BUktFVEVSLCAyLCB0cnVlXQoJXSwKCgoJJ0FkdmVydGlzaW5nJyA9PiBbCgkJWzE1LCBFbXBsb3llZTo6TUFSS0VURVIsIDFdLAoJCVsxMCwgRW1wbG95ZWU6Ok1BUktFVEVSLCAyXSwKCQlbOCwgRW1wbG95ZWU6Ok1BTkFHRVIsIDFdLAoJCVsyLCBFbXBsb3llZTo6RU5HSU5FRVIsIDFdLAoJCVsxLCBFbXBsb3llZTo6TUFSS0VURVIsIDMsIHRydWVdCgldLAoKCgknTG9naXN0aWNzJyA9PiBbCgkJWzEzLCBFbXBsb3llZTo6TUFOQUdFUiwgMV0sCgkJWzUsIEVtcGxveWVlOjpNQU5BR0VSLCAyXSwKCQlbNSwgRW1wbG95ZWU6OkVOR0lORUVSLCAxXSwKCQlbMSwgRW1wbG95ZWU6Ok1BTkFHRVIsIDEsIHRydWVdCgldCgpdOwoKJGRlcHRzID0gW107Cgpmb3JlYWNoICgkaW5wdXQgYXMgJGRlcHQgPT4gJHN0YWZmKSB7CgkkY3VycmVudERlcHQgPSBuZXcgRGVwYXJ0bWVudCgkZGVwdCk7Cglmb3JlYWNoICgkc3RhZmYgYXMgJGVtcGxveWVlR3JvdXApIHsKCQkkcXVhbnRpdHkgPSAkZW1wbG95ZWVHcm91cFswXTsKCQkkdHlwZSA9ICRlbXBsb3llZUdyb3VwWzFdOwoJCSRncmFkZSA9ICRlbXBsb3llZUdyb3VwWzJdOwoJCSRjaGllZiA9IGlzc2V0KCRlbXBsb3llZUdyb3VwWzNdKSA/IHRydWUgOiBmYWxzZTsKCQlmb3IgKCRjID0gMDsgJGMgPCAkcXVhbnRpdHk7ICRjKyspIHsKCQkJJGVtcGxveWVlT2JqZWN0ID0gbmV3ICR0eXBlKCRncmFkZSwgJGNoaWVmKTsKCQkJJGN1cnJlbnREZXB0LT5hZGRUb1N0YWZmKCRlbXBsb3llZU9iamVjdCk7CgkJfQoJfQoJJGRlcHRzW10gPSAkY3VycmVudERlcHQ7Cn0=