Исключения предпочтительнее в PHP:
Коды ошибок (return values) допустимы когда:
// Плохо: null как код ошибки
function find(int $id): ?User { return null; }
// Лучше: Result type или исключение
function findOrFail(int $id): User {
return $this->repo->find($id) ?? throw new NotFoundException();
}