В настоящее время я использую тег <cfinvoke>
для вызова CFC и передачи им аргументов. Это действительно удобно, потому что я могу использовать теги для передачи только тех параметров, которые мне нужны, например:
<cfinvoke component="pathtofolder.imagehandler" method="SomeMethod" argumentcollection="#VARIABLES#" returnvariable="ImageHandlerResult">
<cfif structkeyexists(ARGUMENTS, 'Argument1')>
<cfinvokeargument name="Parameter1" value="#ARGUMENTS.Argument1#" />
</cfif>
<cfif structkeyexists(ARGUMENTS, 'Argument2')>
<cfinvokeargument name="Parameter2" value="#ARGUMENTS.Argument2#" />
</cfif>
<cfif structkeyexists(ARGUMENTS, 'Argument3')>
<cfinvokeargument name="Parameter3" value="#ARGUMENTS.Argument3#" />
</cfif>
</cfinvoke>
<cfreturn ImageHandlerResult /> <!--- how do you get this using createObject/new method? --->
Если я использую методы new()
или createObject()
для создания экземпляра CFC, а затем вызываю методы во вновь созданном экземпляре, я не могу условно передать аргументы. Я получаю ошибки во время выполнения.
<cfset ImageHandler = new pathtofolder.imagehandler()/>
<cfset ImageHandler.SomeMethod(
<cfif StructKeyExists(ARGUMENTS, 'Argument1')>
Parameter1 = ARGUMENTS.Argument1
</cfif>
<cfif StructKeyExists(ARGUMENTS, 'Argument2')>
Parameter2 = ARGUMENTS.Argument2
</cfif>
<cfif StructKeyExists(ARGUMENTS, 'Argument3')>
Parameter3 = ARGUMENTS.Argument3
</cfif>
)/>
Как я могу передать аргументы условно, используя вышеуказанный метод? Должен ли я использовать метод cfinvoke
в новом экземпляре - в таком случае, какой смысл создавать экземпляр, а затем снова использовать cfinvoke
, когда я могу просто использовать cfinvoke
для реального CFC напрямую?