Вурдалак
Продвинутый новичок
Фанат, ты что-нибудь слышал о принципе «tell, don't ask»? Ты ведь просто взял и переврал слова fisher'а и fixxxer'а. Есть объект, занимающийся валидацией — и тут никто не спорит, что есть задача сказать нам. Но ведь мы можем и исключить валидатор из кода:
->
Причина, по которой так делать не стоит в этом конкретном случае, пожалуй заключается только в том, что во втором случае пользователю будет известен лишь факт ошибки, потому что исключения нужны программисту, а не пользователю. Ну, и валидаторы еще могут быть разными в зависимости от прав пользователя, который делал запрос.
Теперь вопрос: почему ты считаешь, что мы не можем взять и исключить проверку существования файла перед попыткой его удалить? Зачем нам интересоваться его состоянием, если это делается и так уже внутри объекта? Сколько можно повторять, что пример просто гнилой, потому что состояние может измениться после проверки и перед удалением?
Ты преподносишь вариант с file_exists + unlink как единственно верный в контексте когда файла может не быть. Я считаю лишь, что вариант с try ... catch лишь более правильный, но не единственно допустимый, простому потому что масштаб мелкий и еще и потому что это PHP: здесь нет и, возможно, никогда не будет исключений на уровне языка из unlink. Попробуй иногда принимать альтернативные решения как допустимые, может тогда тебя все бесить перестанет в чужом коде. Это ж PHP, тут приходится идти на какие-то компромиссы и выбирать меньшее зло.
PHP:
public function handle(Request $request)
{
if ($this->getValidator()->isValid($request)) {
$this->save($request);
return $this->createRedirectResponse();
} else {
// provide errors and other shit
return $this->createErrorResponse();
}
}
PHP:
public function handle(Request $request)
{
try {
$this->save($request);
return $this->createRedirectResponse();
} catch (InvalidArgumentException $e) {
return $this->createErrorResponse();
}
}
Теперь вопрос: почему ты считаешь, что мы не можем взять и исключить проверку существования файла перед попыткой его удалить? Зачем нам интересоваться его состоянием, если это делается и так уже внутри объекта? Сколько можно повторять, что пример просто гнилой, потому что состояние может измениться после проверки и перед удалением?
Ты преподносишь вариант с file_exists + unlink как единственно верный в контексте когда файла может не быть. Я считаю лишь, что вариант с try ... catch лишь более правильный, но не единственно допустимый, простому потому что масштаб мелкий и еще и потому что это PHP: здесь нет и, возможно, никогда не будет исключений на уровне языка из unlink. Попробуй иногда принимать альтернативные решения как допустимые, может тогда тебя все бесить перестанет в чужом коде. Это ж PHP, тут приходится идти на какие-то компромиссы и выбирать меньшее зло.