<?php
class EmployeesFactory
{
public static
function create
( Profession
$profession , int
$amount , int
$rank ) : array {
if ( $amount < 1 ) {
throw new InvalidArgumentException( ) ;
}
$employees = [ ] ;
for ( $count = 0 ; $count < $amount ; $count ++ ) {
$employees [ ] = new Employee( $profession , $rank ) ;
}
return $employees ;
}
}
$company = new Company( 'ООО Вектор' ) ;
$manager = ProfessionFactory( 'Manager' ) ;
$department1 = new Department( 'Рекламы' ) ;
$department1 -> addEmployees ( EmployessFactory:: create ( $manager , 20 , 1 ) ) ;
//...
$company -> addDepartment ( $department1 ) ;
PD9waHAKCmNsYXNzIEVtcGxveWVlc0ZhY3RvcnkKewogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjcmVhdGUoUHJvZmVzc2lvbiAkcHJvZmVzc2lvbiwgaW50ICRhbW91bnQsIGludCAkcmFuayk6IGFycmF5CiAgICB7CiAgICAgICAgaWYgKCRhbW91bnQgPCAxKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24oKTsKICAgICAgICB9CgogICAgICAgICRlbXBsb3llZXMgPSBbXTsKCiAgICAgICAgZm9yICgkY291bnQgPSAwOyAkY291bnQgPCAkYW1vdW50OyAkY291bnQrKykgewogICAgICAgICAgICAkZW1wbG95ZWVzW10gPSBuZXcgRW1wbG95ZWUoJHByb2Zlc3Npb24sICRyYW5rKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkZW1wbG95ZWVzOwogICAgfQp9CgokY29tcGFueSA9IG5ldyBDb21wYW55KCfQntCe0J4g0JLQtdC60YLQvtGAJyk7CgokbWFuYWdlciA9IFByb2Zlc3Npb25GYWN0b3J5KCdNYW5hZ2VyJyk7CgokZGVwYXJ0bWVudDEgPSBuZXcgRGVwYXJ0bWVudCgn0KDQtdC60LvQsNC80YsnKTsKJGRlcGFydG1lbnQxLT5hZGRFbXBsb3llZXMoRW1wbG95ZXNzRmFjdG9yeTo6Y3JlYXRlKCRtYW5hZ2VyLCAyMCwgMSkpOwovLy4uLgoKJGNvbXBhbnktPmFkZERlcGFydG1lbnQoJGRlcGFydG1lbnQxKTs=