Ein veränderliches Bankkonto

public function setBalance(Money $balance): void
{
    $this->ensureSameCurrency($balance);
    $this->balance = $balance;
}
Account.php
<?php declare(strict_types=1);

namespace spriebsch\tfd\softwareArchitecture\eventBased\eventSourcing\mutableAccount;

require __DIR__ . '/autoload.php';

$account = new Account(
    new AccountId('the-id'),
    Currency::EUR,
    new Money(100, Currency::EUR)
);

$account->setBalance(new Money(200, Currency::EUR));

print number_format($account->balance()->amountInCents() / 100, 2) . ' ' . $account->currency()->name . PHP_EOL;
example.php
2.00 EUR
Ausgabe von example.php
example.php ausführen

Jetzt könnte es eine Geschäftsregel geben, dass der Kontostand nicht negativ werden darf. In der Realität ist das meist gar nicht wirklich so, denn beispielsweise Banken leben ja sehr gut davon, dass Konten ins Minus laufen. Aber nehmen wir einmal an, dass wir für unser Konto diese Regel haben wollen, weil unsere Kunden prepaid einkaufen und das nur tun dürfen, wenn das Konto ausreichend gedeckt ist.

Bauen wir ein Bankkonto, das nicht ins Minus laufen kann