---
title: "SnapshotUpcasterChain – API-Referenz · Quittio"
description: "Brings stored snapshots step by step to the current version (v1 → v2 → … → current)."
canonical_url: "https://quittio.dev/docs/api/Quittio/Core/Serialization/Snapshots/SnapshotUpcasterChain"
locale: de
meta:
  "og:description": "Brings stored snapshots step by step to the current version (v1 → v2 → … → current)."
  "og:image": "https://quittio.dev/og/quittio-de.jpg"
  "og:image:alt": "Quittio: E-Rechnungen für PHP und Laravel. Rechtssicher, validiert, archiviert, mit geprüfter Beispielrechnung."
  "og:image:height": "630"
  "og:image:type": image/jpeg
  "og:image:width": "1200"
  "og:title": "SnapshotUpcasterChain – API-Referenz · Quittio"
  "twitter:image": "https://quittio.dev/og/quittio-de.jpg"
  "twitter:image:alt": "Quittio: E-Rechnungen für PHP und Laravel. Rechtssicher, validiert, archiviert, mit geprüfter Beispielrechnung."
---

> Index of every page on this site: [llms.txt](https://quittio.dev/llms.txt)

[API reference](https://quittio.dev/docs/api) / [Quittio](https://quittio.dev/docs/api/Quittio) \\ [Core](https://quittio.dev/docs/api/Quittio/Core) \\ [Serialization](https://quittio.dev/docs/api/Quittio/Core/Serialization) \\ [Snapshots](https://quittio.dev/docs/api/Quittio/Core/Serialization/Snapshots)

# SnapshotUpcasterChain

final class in quittio/core

`Quittio\Core\Serialization\Snapshots\SnapshotUpcasterChain` · [Source](https://github.com/Quittio/quittio/blob/v0.7.1/packages/core/src/Serialization/Snapshots/SnapshotUpcasterChain.php#L12)

Brings stored snapshots step by step to the current version (v1 → v2 → … → current).

## Methods \#

| Method | Description |
| --- | --- |
| `->__construct()` | |
| `::default()` | Shared instance used by InvoiceData::fromSnapshot(). |
| `::documentDefault()` | Shared instance used by DocumentData::fromSnapshot(). Documents have their own versions. |
| `->register()` | |
| `->upcast()` | |
| `::useDefault()` | Replaces the shared instance of InvoiceData::fromSnapshot(); null resets it. |
| `::useDocumentDefault()` | Replaces the shared instance of DocumentData::fromSnapshot(); null resets it. |

### `__construct()`#

```
public function __construct(iterable<SnapshotUpcaster> $upcasters = [])
```

| Parameter | Type | Description |
| --- | --- | --- |
| `$upcasters` | `iterable< [SnapshotUpcaster](https://quittio.dev/docs/api/Quittio/Core/Serialization/Snapshots/SnapshotUpcaster)>` = `[]` | |

### `default()`#

```
public static function default(): self
```

static

Shared instance used by InvoiceData::fromSnapshot().

<dl><dt>Returns</dt>
<dd><code>self</code></dd>
</dl>

### `documentDefault()`#

```
public static function documentDefault(): self
```

static

Shared instance used by DocumentData::fromSnapshot(). Documents have their own versions.

<dl><dt>Returns</dt>
<dd><code>self</code></dd>
</dl>

### `register()`#

```
public function register(SnapshotUpcaster $upcaster): self
```

| Parameter | Type | Description |
| --- | --- | --- |
| `$upcaster` | `[SnapshotUpcaster](https://quittio.dev/docs/api/Quittio/Core/Serialization/Snapshots/SnapshotUpcaster)` | |

<dl><dt>Returns</dt>
<dd><code>self</code></dd>
</dl>

### `upcast()`#

```
public function upcast(
    array<string, mixed> $snapshot,
    int $from,
    int $to = \Quittio\Core\Data\InvoiceData::SNAPSHOT_VERSION,
): array<string, mixed>
```

| Parameter | Type | Description |
| --- | --- | --- |
| `$snapshot` | `array<string, mixed>` | without the "\_version" key |
| `$from` | `int` | |
| `$to` | `int` = `\Quittio\Core\Data\InvoiceData::SNAPSHOT_VERSION` | |

<dl><dt>Returns</dt>
<dd><code>array&lt;string, mixed&gt;</code></dd>
</dl>

### `useDefault()`#

```
public static function useDefault(?self $chain): void
```

static

Replaces the shared instance of InvoiceData::fromSnapshot(); null resets it.

| Parameter | Type | Description |
| --- | --- | --- |
| `$chain` | `?self` | |

### `useDocumentDefault()`#

```
public static function useDocumentDefault(?self $chain): void
```

static

Replaces the shared instance of DocumentData::fromSnapshot(); null resets it.

| Parameter | Type | Description |
| --- | --- | --- |
| `$chain` | `?self` | |

```json
{"@context":"https://schema.org","@graph":[{"@id":"https://quittio.dev/#website","@type":"WebSite","description":"E-Rechnungen für PHP und Laravel: ZUGFeRD, XRechnung und Peppol erstellen, prüfen, lesen und archivieren.","inLanguage":"de-DE","name":"Quittio","url":"https://quittio.dev/","publisher":{"@id":"https://quittio.dev/#identity"},"workTranslation":{"@id":"https://quittio.dev/en#website"}},{"@id":"https://quittio.dev/docs/api/Quittio/Core/Serialization/Snapshots/SnapshotUpcasterChain#webpage","@type":"WebPage","description":"Brings stored snapshots step by step to the current version (v1 → v2 → … → current).","name":"SnapshotUpcasterChain – API-Referenz","url":"https://quittio.dev/docs/api/Quittio/Core/Serialization/Snapshots/SnapshotUpcasterChain","isPartOf":{"@id":"https://quittio.dev/#website"},"potentialAction":[{"@type":"ReadAction","target":["https://quittio.dev/docs/api/Quittio/Core/Serialization/Snapshots/SnapshotUpcasterChain"]}],"primaryImageOfPage":{"@id":"https://quittio.dev/#logo"}},{"@id":"https://quittio.dev/#identity","@type":"Organization","description":"Open-Source-Bibliothek für E-Rechnungen in PHP und Laravel (ZUGFeRD, XRechnung, Peppol) und Quittio Managed.","email":"kontakt@niklasforst.de","legalName":"Niklas Forst – Softwareentwicklung","name":"Quittio","url":"https://quittio.dev","founder":{"@type":"Person","name":"Niklas Forst","url":"https://quittio.dev/ueber"},"logo":{"@id":"https://quittio.dev/#logo"},"sameAs":["https://github.com/Quittio/quittio","https://packagist.org/packages/quittio/quittio"]},{"@id":"https://quittio.dev/#logo","@type":"ImageObject","caption":"Quittio","contentUrl":"https://quittio.dev/logo.png","inLanguage":"de-DE","url":"https://quittio.dev/logo.png"}]}
```