1. Да, надёжней один тип данных или исключение:
Код: Выделить всё
function get(int $id): User {
if (!$user = User::findOne($id)) {
throw new EntityNotFoundException('User is not found.');
}
return $user;
}
2. Иногда можно один тип или null:
Код: Выделить всё
function find(int $id): ?User {
return User::findOne($id);
}
Но тогда придётся добавить if ($user !== null) в вызывающий этот метод код.
3. В процедурах не возвращать true/false, а либо делать дело молча, либо кидать исключение:
Код: Выделить всё
function save(User $user): void {
if (!$user->save()) {
throw new ValidationException($user->getErrors());
}
}
4. При желании из процедуры вернуть результат;
Код: Выделить всё
function create(array $attributes): User {
$user = new User($attributes);
if (!$user->save()) {
throw new ValidationException($user->getErrors());
}
return $user;
}