<?php
class Organisation {
private $name ;
private $departments = [ ] ;
public function __construct( $name ) {
$this -> name = $name ;
}
public function addDepartment( Department $dep ) {
if ( ! in_array ( $dep , $this -> departments ) ) { $this -> departments [ ] = $dep ;
}
else {
throw new Exception( 'Organisation already have that department' ) ;
}
}
}
class Department {
public function __construct( $name ) {
$this -> name = $name ;
}
}
$vector = new Organisation( 'Вектор' ) ;
$dep1 = new Department( 'dep1' ) ;
$vector -> addDepartment ( $dep1 ) ;
$vector -> addDepartment ( $dep1 ) ;
$dep2 = new Department( 'dep2' ) ;
$vector -> addDepartment ( $dep2 ) ;
PD9waHAKCmNsYXNzIE9yZ2FuaXNhdGlvbiB7CgoJcHJpdmF0ZSAkbmFtZTsKCXByaXZhdGUgJGRlcGFydG1lbnRzID0gW107CgoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRuYW1lKSB7CgkJJHRoaXMtPm5hbWUgPSAkbmFtZTsJCQoJfQoKCXB1YmxpYyBmdW5jdGlvbiBhZGREZXBhcnRtZW50KERlcGFydG1lbnQgJGRlcCkgewoJCWlmICghaW5fYXJyYXkoJGRlcCwgJHRoaXMtPmRlcGFydG1lbnRzKSkgewoJCQkkdGhpcy0+ZGVwYXJ0bWVudHNbXSA9ICRkZXA7CQoJCX0KCQllbHNlIHsKCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbignT3JnYW5pc2F0aW9uIGFscmVhZHkgaGF2ZSB0aGF0IGRlcGFydG1lbnQnKTsKCQl9Cgl9CgoKfQoKY2xhc3MgRGVwYXJ0bWVudCB7CglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJG5hbWUpIHsKCQkkdGhpcy0+bmFtZSA9ICRuYW1lOwoJfQp9CgokdmVjdG9yID0gbmV3IE9yZ2FuaXNhdGlvbign0JLQtdC60YLQvtGAJyk7CgokZGVwMSA9IG5ldyBEZXBhcnRtZW50KCdkZXAxJyk7CiR2ZWN0b3ItPmFkZERlcGFydG1lbnQoJGRlcDEpOwokdmVjdG9yLT5hZGREZXBhcnRtZW50KCRkZXAxKTsKJGRlcDIgPSBuZXcgRGVwYXJ0bWVudCgnZGVwMicpOwokdmVjdG9yLT5hZGREZXBhcnRtZW50KCRkZXAyKTsKCgp2YXJfZHVtcCgkdmVjdG9yKTsKCg==