/** * Parses an array of claims and returns an instance of the class Jwt. * @param array $payload An array of claims. * @return Jwt Instance of the class Jwt. */ public static function parseFromArray(array $payload) { $instance = new self(); !isset($payload['iss']) ?: ($instance->issuer = utf8_encode($payload['iss'])); !isset($payload['iat']) ?: ($instance->issuedAt = (int) $payload['iat']); !isset($payload['nbf']) ?: ($instance->notBefore = (int) $payload['nbf']); !isset($payload['exp']) ?: ($instance->expires = (int) $payload['exp']); !isset($payload['sub']) ?: ($instance->subject = utf8_encode($payload['sub'])); !isset($payload['aud']) ?: ($instance->audience = utf8_encode($payload['aud'])); $customClaims = array_diff(array_keys($payload), self::getRegisteredClaimNames()); foreach ($customClaims as $claim) { $instance->customClaims[$claim] = $payload[$claim]; } if (isset($payload['jti'])) { $instance->jwtId = $payload['jti'] === true ? $instance->createJwtId() : $payload['jti']; } return $instance; }