Автоматизация проверки задач на PHP

Решил выполнить эту задачу:
Частичная автоматизация проверки задач на PHP

Как я понимаю: в визуальной части будет форма на PHP, где будет указываться .pas файл задачи на Pascal, которую необходимо решить. (кнопка с выбором нужного файла через проводник).

Далее PHP скрипт будет компилировать .pas в exe, использовав какой-нибудь компилятор Pascal. На Windows я скачивал программу Free Pascal и запускал из cmd встроенный компилятор внутри этой программы. Таким образом получал exe файл задачи.

И далее когда exe файл скомпилирован, использую базовую функцию php:

exec()
или
system()

для передачи управления PHP скрипту. Когда делал на Windows, у меня в консоли отрабатывала полностью задача на Pascal, также эмулировался пользовательский ввод.

Key Words for FKN + antitotal forum (CS VSU):

vedro-compota's picture

само решение должно представлять из себя класс (т.е. должно быть переносимым, без привязки к пользовательскому интерфейсу), которому в конструкторе передается:

  1. содержимое .pas файла как строка
  2. строка пользовательского ввода (что передать программе на Паскале при её обращении к стандартному потоку ввода)
  3. ожидаемый от работы программы на Паскале результат (строка)

_____________
матфак вгу и остальная классика =)

Pavel1989's picture

А какой будет принцип работы для пользователя?
Допустимо использовать функцию exec() и ей запускать exe файл из php скрипта и активировать решение задачи в терминале?

Или этот будет просто класс который получает строки на вход и отдает строки?

vedro-compota's picture

в конечном итоге - да, на вход идут строки (в параметрах ещё может быть путь к компилятору Паскаля), на выходе же мы получаем:

  1. признак успешности/неуспешности проверки
  2. некий комментарий (например в случае неуспеха "ожидался x получили y")

На практике для тестирования такого класса можно конечно использовать форму, можно сразу юнит-тесты, с заранее созданным файлом .pas и значением для проверки.

_____________
матфак вгу и остальная классика =)