README.md

funpay-test

Тестовое задание для funpay. Полный текст задания указан в файле TASK.md

Примечание

Тестовое задание реализовано с неизменными классами и скриптами, что были предоставлены в начале, с двумя исключениями:

  • создание mysqli объекта вынесено из тела теста в отдельный файл mysqli.php
  • автолоадер был вынесен в отдельный файл autoload.php

Принцип работы

Формирование запроса происходит в 3 шага 1. Токенизация по MYSQL синтаксису: проверка закрытия кавычек и корректности значений 2. Токенизация по условным выражениям. Проверка skip-значений 3. Токенизация по идентификаторам, форматирование и экранирование значений

Каждый из типов токенизации вынесен в отдельную чистую функцию в классе QueryHelper. Итоговая работа достигается композицией этих функций, описанием преобразований над токенизированным сроками и вставкой значений при помощи форматировщика в компоненте QueryProcessor

Проверка корректности итогового SQL-синтаксиса не проводится, т.к. происходит на стороне БД при получении запроса. Значения при вставке - экранируются от SQL-инъекций.

Скрипты

  • test.php - Исходный тест. Проверка корректности работы программы.
  • custom-hash-test.php - Тест настраиваемого хэша
  • query-helper-test.php - Тест вспомогательного класса QueryHelper
  • query-processor-test.php - Тест компонента QueryProcessor
  • string-helper-test - Тест вспомогательного класса StringHelper

Вспомогательный классы

Содержат преимущественно чистые статические методы

  • AssertHelper - содержит методы для продвинутой проверки значений
  • ArrayHelper - содержит методы для продвинутой обработки массивов
  • IntervalHelper - содержит методы для преобразования интервалов
  • QueryHelper - содержит чистые методы токенизации и преобразования частей SQL-запросов
  • StringHelper - содержит методы для продвинутой обработки строк

Автор

Анатолий стародубцев tostar74@mail.ru @pantagruel74

Спасибо за внимание!

Описание

Тестовое задание для Funpay

Конвейеры
0 успешных
0 с ошибкой