June 2017
Intermediate to advanced
394 pages
8h 52m
English
Say there's an instance where a client bypasses UpdateOrderAmountService and instead fetches, updates, and persists directly to OrderRepository. Then, all the extra business logic that the UpdateOrderAmountService service might have won't be executed. This could lead to the order being stored in an inconsistent state. As such, invariants should be correctly guarded, and the best way to do this is to let the true Domain Model handle it. In the case of this example, the Order Entity would be the best place to ensure this:
class Order { // ... public function changeAmount($amount) { $this->amount = $amount; $this->setUpdatedAt(new DateTimeImmutable()); }}
Note that by pushing this action ...