Прошу оценить код

Начал изучать PHP и есть задание: Напишите программу-калькулятор a. Форма для ввода двух чисел, выбора знака операции и кнопка "равно" b. Данные пусть передаются методом GET из формы (да, можно и так!) на скрипт, который их примет и выведет выражение и его результат c*. Попробуйте улучшить программу. Пусть данные отправляются на ту же страницу на PHP, введенные числа останутся в input-ах, а результат появится после кнопки "равно". Вот сам код:

<?php

$firstNumber = $_GET['firstNumber'];
$secondNumber = $_GET['secondNumber'];
$sign = $_GET['sign'];
$res = 0;

if(!empty(is_numeric($firstNumber))
    && !empty(is_numeric($secondNumber))){
    switch ($sign){
        case '+':
            $res = $firstNumber + $secondNumber;
            break;
        case '-':
            $res = $firstNumber - $secondNumber;
            break;
        case '*':
            $res = $firstNumber * $secondNumber;
            break;
        case '/':
            $res = $firstNumber / $secondNumber;
            break;
        default : $res ='Ошибка! Попробуй еще...';
            break;
    }

}else{
        $firstNumber = 0;
        $secondNumber = 0;
    }
    ?>
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Calculate</title>
</head>
<body>
<form action="/3/calc.php" method="get">
    <input type="text" name="firstNumber" placeholder="Enter first number" value="<?php echo $firstNumber ?>">
    <select name="sign">
        <option value="+">+</option>
        <option value="-">-</option>
        <option value="*">*</option>
        <option value="/">/</option>
    </select>
    <input type="text" name="secondNumber" placeholder="Enter second number" value="<?php echo $secondNumber ?>">
    <button type="submit">=</button> <?php echo $res; ?>
</form>
</body>
</html>

Хотел бы получить отзыв. Может, упустил какую-то проверку. Или сам код можно улучшить. Буду благодарен за обратную связь. Спасибо!


Ответы (1 шт):

Автор решения: Ипатьев

В целом очень неплохо, но есть несколько замечаний

  • Задача не решена, исходное выражение не выводится
  • надо включить отображение ошибок РНР и исправить их. И всегда писать любой код с максимальным уровнем отображения ошибок.
  • убрать совершенно бессмысленую функцию empty() и впредь применять её только по назначению
  • убрать action="/3/calc.php"
  • вывод делать предназначенным для этого тегом, <?= $secondNumber ?>
  • я бы добавил внятные сообщения об ошибках, если какое-то знаение не проходит проверку, то так об это и написать, вместо игривых намёков.
→ Ссылка