Я пишу функцию, которая просматривает некоторую информацию на странице регистрации. Внутри цикла я пытаюсь вызвать функции на основе массива. У меня проблемы с правильным вызовом функций, потому что я пытаюсь включить переменную как часть имени функции.
Вот мой код:
<cfscript>
fields = arraynew(1);
fields[1] = 'r_email';
fields[2] = 'r_uname';
fields[3] = 'r_pass';
for(i = 1; i lte arraylen(fields); i = i + 1)
{
func = fields[i].split('r_');
func = 'validate_#func[2]#(#fields[i]#)';
}
</cfscript>
Итак, у меня есть три функции: validate_email, validate_uname , validate_pass. Если я использую writeoutput () и пытаюсь вывести результаты функции, они не работают.
Вот этот код:
<cfscript>
fields = arraynew(1);
fields[1] = 'r_email';
fields[2] = 'r_uname';
fields[3] = 'r_pass';
for(i = 1; i lte arraylen(fields); i = i + 1)
{
func = fields[i].split('r_');
func = 'validate_#func[2]#(#fields[i]#)';
writeoutput('#func#');
}
</cfscript>
Теперь я понимаю, что когда вы используете writeoutput (), и вы вызываете функцию, вам нужен символ решетки на обоих концах. Итак, допустим, я пишу это так:
writeoutput('#validate_#func[2]#(#fields[i]#)#');
Это не сработает, потому что второй символ решетки отменяет вызов функции. Вот как в конечном итоге должна выглядеть функция (пример электронной почты):
writeoutput('#validate_email('email@site.com')#');
Как я могу заменить «адрес электронной почты» (#validate_email ...) на правильное имя переменной, чтобы функция продолжала работать? Надеюсь, я сделал это понятным!