/** * Initialization method * @param string $string data for object initialization * @throws InvalidReceiptException when receipt status code is invalid * @throws ExpiredSubscriptionException when subscription expired * @throws InvalidArgumentException wen initialization data incorrect * @return RenewableStatus initialized status object */ public static function initializeByString($string) { $Object = json_decode($string); switch ($Object->status) { case self::STATUS_OK: if (!isset($Object->latest_receipt)) { throw new InvalidArgumentException(); } else { $RenewableStatus = new self(); $RenewableStatus->setLatestReceipt($Object->latest_receipt)->setLatestReceiptInfo(RenewableReceipt::initializeByObject($Object->latest_receipt_info))->setStatus($Object->status)->setReceipt(RenewableReceipt::initializeByObject($Object->receipt)); return $RenewableStatus; } case self::STATUS_EXPIRED_SUBSCRIPTION: $RenewableStatus = new self(); $RenewableStatus->setStatus($Object->status)->setReceipt(RenewableReceipt::initializeByObject($Object->receipt)); throw new ExpiredSubscriptionException($RenewableStatus); default: $exceptionClass = self::checkStatus($Object->status); $Exception = new $exceptionClass($string, $Object->status); throw $Exception; } }