<?php namespace OSM\Element\Member; class Member { public int $ref; public string $role; public static function createFromArray($array) { assert(is_array($array)); $hasType = isset($array['type']); assert($hasType); $className = __NAMESPACE__.'\\'.ucfirst($array['type']); $hasClass = class_exists($className); $instance = new $className(); $hasRef = isset($array['ref']); assert($hasRef); $instance->ref = (int) $array['ref']; $hasRole = isset($array['role']); assert($hasRole); $instance->role = (string) $array['role']; $instance->completeFromArray($array); return $instance; } public function isSame(Member $other): bool { return ($this->ref === $other->ref); } }