Как сделать калькулятор на PHP

Пишем калькулятор на PHP

Всем привет! Мы с вами изучили 2 типа запросов: GET и POST. Они позволяют нам отправлять данные на сервер, благодаря чему мы можем с ним «общаться». Мы рассмотрели несколько простейших примеров. В этом уроке для закрепления материала мы с вами напишем свой калькулятор!

Прежде чем приступить к его созданию, давайте обговорим то, что он должен уметь. Пусть наш калькулятор будет принимать на вход 2 числа, и операцию, которую над этими числами нужно совершить (сложение, вычитание, умножение, деление). После этого он будет выводить нам получившееся выражение и его результат.

Итак, вот так будет выглядеть форма для ввода исходных данных:
Форма калькулятора

А вот так будет выглядеть страница с результатом:
Результат вычислений

Давайте теперь спроектируем, где что будет лежать. Я предлагаю сделать такую архитектуру:

  • index.php – здесь будет храниться форма, в которой мы будем заполнять исходные данные
  • result.php – здесь будет храниться шаблон, который будет выводить результат вычислений
  • calc.php – файл, в котором будет храниться непосредственно вся бизнес-логика нашего приложения.

Шаблоны калькулятора

Итак, приступим. Давайте начнём с формы. Она будет содержать в себе:

  • 2 input’а, в которые мы будем записывать аргументы;
  • select, который позволит нам выбрать одну из доступных операций;
  • кнопку, для отправки формы.

Я приведу здесь пример формы, в которой будет только две возможные операции: сложение и вычитание.

Код доступен только после покупки курса PHP для начинающих.

Здесь вам всё должно быть знакомо. Если нет — повторите уроки с формами в курсе HTML.

Мы видим, что данная форма отправляет GET-запрос на адрес /result.php. Как мы уже решили, там будет находиться шаблон для вывода результата вычислений.

Вот пример кода, который получился у меня:

Код доступен только после покупки курса PHP для начинающих.

Как видим, здесь всё предельно просто — в переменную $result присваивается значение, возвращаемое из файла calc.php. Затем мы просто-напросто выводим результат из этой переменной.

Бизнес-логика калькулятора

Теперь самое интересное — написать бизнес-логику. Создаём файл calc.php и начинаем думать.

Первое, в чём нам стоит убедиться, есть ли вообще какие-либо данные в GET-запросе. Для этого проверяем массив $_GET на пустоту:

Код доступен только после покупки курса PHP для начинающих.

Сейчас, если перейти по адресу http://myproject.loc/result.php, мы увидим соответствующий результат:
Исходные данные пусты

Далее, нам стоит проверить, что из формы переданы x1, x2 и operation.

Код доступен только после покупки курса PHP для начинающих.

Можно теперь вернуться на форму с исходными данными и заполнить её какими-нибудь данными:
Заполняем форму исходными данными

Если теперь нажать на кнопку отправки формы, мы увидим, что никаких ошибок в форме результата теперь не возникло:
Результат без ошибок

Вместо этого мы теперь видим число 1. Это результат того, что в файле calc.php мы ничего не вернули, но при этом попытались это «ничего» с помощью функции require присвоить в переменную $result. Единица вернулась нам, потому что файл был успешно подключен, но ничего не вернул. Это значение по умолчанию.

Попробуем теперь убрать один из аргументов в форме:
Убираем аргумент из исходных данных

Если мы отправим запрос сейчас, то увидим соответствующую ошибку:
Ошибка при пустых аргументах

Ну что, теперь мы знаем, что данные у нас проверяются, можно с ними и поработать.

Давайте для удобства сделаем 2 переменные $x1 и $x2 и положим в них значения из GET-запроса.

Код доступен только после покупки курса PHP для начинающих.

Давайте теперь составим выражение, которое мы будем вычислять. Его мы просто будем выводить для наглядности.

Код доступен только после покупки курса PHP для начинающих.

Теперь вернёмся на форму и снова введём корректные аргументы. После этого отправим её и увидим, что на странице с результатом появилось выражение, результат которого мы будем считать.
Выражение из исходных данных

Дело осталось за малым — нужно только посчитать результат.

Для того, чтобы определить, какое действие нужно совершить с аргументами, воспользуемся конструкцией switch-case.

В результате получаем такое содержимое calc.php.

Код доступен только после покупки курса PHP для начинающих.

Давайте теперь снова отправим форму и посмотрим на результат.
Калькулятор готов

Получили простейший калькулятор, который умеет складывать и вычитать. Разумеется, это лишь простейший прототип. Довести его до ума вы сможете сами, а в домашнем задании вас ждут наводящие вопросы, которые помогут найти ошибки, содержащиеся в приведенном коде.