Нет, не так
Vint 09.09.2012 04:24
Ваше условие тоже неправильное.
Если в $form:image придёт, например, текстовая строка, то парсер упадёт с ошибкой при попытке инвертировать значение через !.
И чего зря гадать, когда есть таблица приоритетов?
http://www.parser.ru/docs/lang/Миша правильно про скобки сказал.
А ещё стоит группировать проверки, чтобы конечное условие легко читалось, т.е. я бы написал так:
^if(!(def $form:image && $form:image is file)){}
По поводу расширения файлов.
Не надо советовать подобные решения в лоб. Самое главное правило в таких задачах: от пользователя могут придти
любые данные в любом виде. В данном случае, файл может быть без расширения вообще или с несколькими расширениями (правда, file:justext здесь нормально отработает, наверное). Но даже наличие расширения никак не гарантирует соответствие файла этому формату.
Картинки можно проверить только через ImageMagick, NConvert и смежные библиотеки.
Проверки на расширение — от лукавого и лишь усложнят последующую отладку с "проблемными" файлами.