строка coldfusion для работы или динамический cfc

Я работаю над проектом генерации кода, в котором я хотел бы динамически создавать структуры с функциональностью. Я обнаружил, что вы можете определять функции для структуры, но я хочу динамически генерировать имя, возвращаемое значение и любые операторы внутри функции. Я подумал, что строка позволит мне это сделать, но я не могу понять, как преобразовать строку в функцию. Возможно ли это, если нет, то можно ли динамически генерировать CFC?

<cfset j = structnew()>
<cfset j.test = evaluate('function(){ return "test"; }')>
<cfdump var="#j#">
<cfabort>

person Silas    schedule 20.10.2017    source источник
comment
Мне не нравится такой подход. Я просто не вижу причин, по которым функции возникают и исчезают. Обычно я думаю об изменении переменных, но не функций.   -  person James A Mohler    schedule 21.10.2017
comment
@JamesAMohler дело не в том, что функция часто меняется, а в использовании общей структуры для определения функции. IE определяет информацию о моих функциях внутри объекта json, а затем может генерировать ту же функцию в javascript, coldfusion, c# или любом другом языке, который я хочу (если я написал генератор для этого языка).   -  person Silas    schedule 21.10.2017


Ответы (1)


Вы можете динамически создавать .cfc так же, как вы можете динамически создавать .cfm.

Шаг 1 - создайте содержимое файла как строковую переменную.

Шаг 2 - используйте cffile для записи файла.

Шаг 3 - перенесите файл на свою страницу. Для файлов .cfm это будет тег <cfinclude>. С файлами .cfc может быть createObject (функция)

Шаг 4 - используйте код в файле.

Шаг 5 - удалить файл.

person Dan Bracuk    schedule 20.10.2017