/** * Fetch an object's subresource from the API * * @param string $type The subresource to fetch * @param array $params The params for the subresource query * * @return object The subresource object */ public function fetch_sub_resource($type, $params = array()) { // Generate subresource endpoint by snipping out the // right part of the sub_resource_uri $endpoint = preg_replace('/api\\/v[0-9]+\\//', '', parse_url($this->sub_resource_uris[$type], PHP_URL_PATH)); $sub_resource_params = array(); // Extract params from subresource uri if available and create // sub_resource_params array if ($param_string = parse_url($this->sub_resource_uris[$type], PHP_URL_QUERY)) { $split_params = explode('&', $param_string); foreach ($split_params as $split_param) { $parts = explode('=', $split_param); $sub_resource_params[$parts[0]] = $parts[1]; } } // Overwrite params from subresource uri with passed params, if found $params = array_merge($params, $sub_resource_params); // Get class name $class = 'GoCardless_' . GoCardless_Utils::camelize(GoCardless_Utils::singularize($type)); $objects = array(); // Create an array of objects foreach ($this->client->request('get', $endpoint, $params) as $value) { $objects[] = new $class($this->client, $value); } // Return the array of objects return $objects; }