Нужен совет по созданию нового "стандарта" / "языка" - PullRequest
6 голосов
/ 30 сентября 2010

ОБНОВЛЕНИЕ: В комментариях было предложено создать для этого вики. Я сделал, вы можете найти его здесь (если вы хотите следить за этим и / или внести свой вклад).

http://vrs.tomelders.com

Я никогда раньше не работал над чем-то подобным, поэтому я полностью облажался.


Я никогда не работал над чем-то подобным, поэтому, пожалуйста,

Я хочу работать над открытым "стандартом" или "языком", или ... ну, я не знаю, как это назвать .... чтобы упростить проверку формы. Я называю это VRS (листы правил валидации), но на данном этапе все является предметом переговоров.

Идея состоит в том, чтобы создать лист правил, похожий на CSS, который определяет, как формы должны проверяться. Это потребует

  1. Синтаксис / Спецификация
  2. Парсер VRS для преобразования VRS во что-то полезное
  3. Процессор VRS для сравнения данных формы с правилами и возврата ответа.
  4. Формат ответа.

Преимущества такой системы будут

  1. Платформенный / языковой независимый способ определения валидации форм.
  2. Кроссплатформенный, очень переносимый способ определения форм валидации.
  3. Легко читается, легко настраивается, легко модифицируется.
  4. Клиентская и внутренняя интеграция.

Хотя обо всем по порядку. Как должен выглядеть синтаксис / спецификация.

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

В качестве примера, вы можете проверить, что тип содержимого поля «name» будет выглядеть так:

name {
    content-type: alpha;
}

Тип содержимого может быть одним из трех значений: буквенное, числовое или буквенно-числовое.

Надеюсь, это имеет смысл. Я никогда не делал ничего подобного раньше, поэтому мне не терпится узнать мнение других людей. Вот, насколько я получил

------------------------------------------------------------

content-type: (string) alphanumeric | alpha | numeric

Restricts content to either numeric, text or alphanumeric.

------------------------------------------------------------

is-fatal: BOOL

If the rule fails, is it fatal? This could be really useful
for AJAX responses.

------------------------------------------------------------

allow-null: BOOL

wether a field can be empty or not. Good for required fields
and checkboxes 

------------------------------------------------------------

pattern-match: (string) email | url | regex

match the field against a pattern. 

------------------------------------------------------------

field-match: (string) field_name

compares a field to another field. eg: password confirmation

------------------------------------------------------------

greater-than: INT | FLOAT
less-than: INT | FLOAT
within-range: INT | FLOAT, INT | FLOAT

Pretty self explanatory. With regard to strings however, 
the string length is compared against the params.

------------------------------------------------------------

is-unique: (func) connection(host,user,pass), (func) map(table, field)

Check the value against a field in the database to see if
it's unique.

------------------------------------------------------------

date & time validations

This i'm a bit worried about in terms of terminology. I also
want to include dynamic vars in VRS such as

@now
@today
@thisMonth
@thisYear

------------------------------------------------------------

before: STRING | VAR
after: STRING | VAR

Again, self explanatory. Although I'm unsure what the date/time
format should be. UTC?


------------------------------------------------------------

Elapsed Time:

I'm completely stuck on how to handle conditions like
"years elapsed since date is more than 16"

I don't relish the idea of rules as prolix as

years-elapsed-since-now-are-more-than:18;
years-elapsed-since-now-are-less-than:18;

Наконец, я обсуждаю, должны ли разработчики указывать ошибки / предупреждения в VRS, или они должны делать это при обработке ответа?

Итак, это много, и я надеюсь, что это понятно. Мои вопросы, я думаю,

  1. Хорошая идея / плохая идея?
  2. Это правильный вид синтаксиса?
  3. Существуют ли более элегантные способы именования правил.
  4. Чего не хватает.

спасибо


ОБНОВЛЕНИЕ: Несколько человек заявили, что эта предложенная система - плохая идея. Если вы так думаете, приведите сценарий, в котором он не будет работать. Думать, что это плохая идея, это одно, доказывать, что это плохая идея, это другое, и я хотел бы увидеть доказательство того, что это плохая идея раньше, чем позже. Если вы действительно думаете, что проверка формы не может быть проще или менее утомительной, объясните, почему.

Кроме того, я знаю, что проверка формы не является новой проблемой. Однако в настоящее время не существует портативного, кросс-платформенного, кросс-языкового решения для проверки правильности формы, к чему конкретно относится это предложение.

Ответы [ 3 ]

2 голосов
/ 30 сентября 2010

Мне нравится идея помещать сообщения об ошибках в VRS. Но они должны соответствовать правилу, которое не удалось.

Кроме того, вы могли бы рассмотреть не разработку совершенно нового «языка», но использовать что-то вроде YAML , для которого уже существуют разборы.

Я считаю этот язык полезным, поскольку вы можете использовать один и тот же VRS для проверки как на стороне клиента, так и на стороне сервера.

PS: Это должно быть сообщество вики Metinks.

0 голосов
/ 30 сентября 2010
  1. Хорошая идея / плохая идея?

    Вообще, такие вещи - плохая идея. Для этого и нужен PHP.

    Что не так с http://www.phpformclass.com/ http://www.x -code.com / vdaemon_web_form_validation.php или другие инструменты управления формами PHP?

  2. Правильный ли это синтаксис?

    Нет. Что не так с PHP? У него хороший синтаксис для такого рода вещей.

  3. Существуют ли более элегантные способы именования правил.

    Да. Классы объектов PHP. Многочисленные другие проекты. Вы не первый человек, который подтверждает правильность ввода формы.

  4. Чего не хватает.

    Отвечая на фундаментальный вопрос: Что не так с PHP?

    Список связанных проектов, которые уже делают это, и конкретных причин, по которым ваш проект лучше, чем все других уже существующих.

0 голосов
/ 30 сентября 2010
  1. Полагаю, это хорошая идея, если вы можете поддерживать ее самостоятельно.

  2. Помните, вы создали синтаксис. Вам решать (пока это выглядит прилично).

  3. нет, не совсем. Пока имена очевидны (выглядят так, как они есть), не слишком длинные и не запутанные, все в порядке.

  4. Возможно, вы должны отметить значения по умолчанию для правил, когда они не указаны.

...