{$k}; if ((static::getSavedNestedResources()->includes($k)) && ($v instanceof ApiResource)) { $v->saveWithParent = true; } } /** * @throws Exception\ApiErrorException * * @return ApiResource the refreshed resource */ public function refresh() { $requestor = new ApiRequestor($this->_opts->apiKey, static::baseUrl()); $url = $this->instanceUrl(); list($response, $this->_opts->apiKey) = $requestor->request( 'get', $url, $this->_retrieveOptions, $this->_opts->headers ); $this->setLastResponse($response); $this->refreshFrom($response->json, $this->_opts); return $this; } /** * @return string the base URL for the given class */ public static function baseUrl() { return Stripe::$apiBase; } /** * @return string the endpoint URL for the given class */ public static function classUrl() { // Replace dots with slashes for namespaced resources, e.g. if the object's name is // "foo.bar", then its URL will be "/v1/foo/bars". /** @phpstan-ignore-next-line */ $base = \str_replace('.', '/', static::OBJECT_NAME); return "/v1/{$base}s"; } /** * @param null|string $id the ID of the resource * * @throws Exception\UnexpectedValueException if $id is null * * @return string the instance endpoint URL for the given class */ public static function resourceUrl($id) { if (null === $id) { $class = static::class; $message = 'Could not determine which URL to request: ' . "{$class} instance has invalid ID: {$id}"; throw new Exception\UnexpectedValueException($message); } $id = Util\Util::utf8($id); $base = static::classUrl(); $extn = \urlencode($id); return "{$base}/{$extn}"; } /** * @return string the full API URL for this API resource */ public function instanceUrl() { return static::resourceUrl($this['id']); } }