interface UserRepository {
findById(int $id): ?User;
save(User $user): void;
}
class SqlUserRepository implements UserRepository { ... }In small CRUD applications, a Repository is over-engineering. It is justified when business logic is complex and independence from the data source matters.