$data Associative array of data. * * @return self * @throws Exception If required fields are missing. */ public static function from_array( array $data ) { // Validate required fields. self::require_field( $data, 'id', 'Type' ); self::require_field( $data, 'title', 'Type' ); self::require_field( $data, 'slug', 'Type' ); $instance = new self(); $instance->id = (int) $data['id']; $instance->title = (string) $data['title']; $instance->slug = (string) $data['slug']; return $instance; } }