id = $id; $this->fornavn = $fornavn; $this->efternavn = $efternavn; $this->dob = $dob; } public function getId() { return $this->id; } public function getFornavn() { return $this->fornavn; } public function getEfternavn() { return $this->efternavn; } public function getDob() { return $this->dob; } public function getNavn() { return $this->fornavn . ' ' . $this->efternavn; } public function getU() { $dt = new DateTime($this->dob); $y = (int)$dt->format('Y'); $u = U::$uarray[(U::$baseyear - $y) / 2]; return $u; } } class MedlemsKartotek { private $list; public function __construct() { $this->list = array(); } public function loadFromDatabase() { // simulation - should really load data from database $this->list[] = new Medlem(1, 'A', 'AA', '1-Jan-2009'); $this->list[] = new Medlem(1, 'B', 'BB', '1-Feb-2008'); $this->list[] = new Medlem(1, 'C', 'CC', '1-Mar-2005'); $this->list[] = new Medlem(1, 'D', 'DD', '1-Apr-2004'); } public function getAll() { return $this->list; } public function getU($u) { return array_filter($this->list, function($medlem) use($u) { return $medlem->getU() === $u; }); } } class Formatter { public static function format($lbl, $list) { return sprintf("%s: %s", $lbl, array_reduce($list, function($accum, $medlem) { if(strlen($accum) > 0) $accum .= ','; return $accum .= $medlem->getNavn(); }, '')); } } $kartotek = new MedlemsKartotek(); $kartotek->loadFromDatabase(); echo Formatter::format('All', $kartotek->getAll()) . "\r\n"; foreach(U::$uarray as $u) { echo Formatter::format($u, $kartotek->getU($u)) . "\r\n"; } ?>