함수를 호출하는 방법을 동적으로는 부분의 인스턴스화 cfc 를 사용하지 않고,평가()?

StackOverflow https://stackoverflow.com/questions/84463

  •  01-07-2019
  •  | 
  •  

문제

예를 들어 나는 할 수 있어야 프로그래밍 방식으로 온라인 코드의 다음과 같은 함수 이름을 동적으로 할당을 사용하지 않고 평가().아래 코드는 물론 작동하지 않지만 무엇을 나타내고 싶 않습니다.

application.obj[funcName](argumentCollection=params)

수있는 가장 쉬운 방법을 찾아 함수를 호출하려면 동적으로 사용하는 것입 cfinvoke,하지만 지금까지 말할 수 있는 인스턴스화 관련 cfc/기능에 비행을하고 사용할 수 없습니다 이전에 인스턴스화 cfc.

감사

도움이 되었습니까?

해결책

에 따라 문서,당신은 다음과 같이 할 수 있다:

<!--- Create the component instance. --->
<cfobject component="tellTime2" name="tellTimeObj">
<!--- Invoke the methods. --->
<cfinvoke component="#tellTimeObj#" method="getLocalTime" returnvariable="localTime">
<cfinvoke component="#tellTimeObj#" method="getUTCTime" returnvariable="UTCTime">

당신이해야 할 수있는 단순히 그것으로 method="#myMethod#"를 동적으로 부르는 특정한 기능입니다.

다른 팁

당신이 사용할 수 있습 cfinvoke.당신은 없을 지정하는 구성 요소입니다.

<cfinvoke method="application.#funcName#" argumentCollection="#params#">

당신은 또한 매우 유사,당신은 그것을 사용하기를 원했습니다.당신은에 액세스할 수 있는 방법 개체 내에서 사용되는 구문을 사용되는,당신은 단지 그것에 동일한 시간입니다.그러나,당신이 할당 temp 변수를 호출할 수 있습니다 그것은

<!--- get the component (has methods 'sayHi' and a method 'sayHello') --->
<cfset myObj = createObject("component", "test_object")>

<!--- set the function that we want dynamically then call it (it's a two step process) --->
<cfset func = "sayHi">
<cfset funcInstance = myObj[func]>
<cfoutput>#funcInstance("Dave")#</cfoutput>

<cfset func = "sayHello">
<cfset funcInstance = myObj[func]>
<cfoutput>#funcInstance("Dave")#</cfoutput>

에 CFML,함수가 첫 번째 클래스의 구성원은 언어입니다.이것은 우리들을 통과하는 그들이 주위에 있습니다.다음 예에서 나는 복사기능의 이름은'foobar'고 이름을 변경"$fn"이내에는 동일한 개체입니다.그런 다음 우리는 단순히 부르$fn().

funcName = 'foobar';    
application.obj.$fn = application.obj[funcName];
application.obj.$fn(argumentCollection=arguments);

의 컨텍스트 기능은 중요하고,특별히 참조하는 경우 모든 값을'변수'또는'이'범위의 객체입니다.참고:이것은 스레드에 안전한 CFC 인스턴스 공유 범위!

가장 빠른 방법이 사용하는 벤 운명의 추천합니다.I just wanted 을 철저합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top