2010-01-15 2 views
2

cfinvoke를 사용하지 않고 CFC에서 정적 메서드를 호출하려면 어떻게합니까? 나는이 작업을 수행 할 수 있다는 사실을 알고 :cfinvoke를 사용하지 않고 CFC에서 정적 메서드를 실행하려면 어떻게해야합니까?

<cfinvoke component="MyComponent" method="myStaticMethod' arg1="blah" returnvariable=myReturnVar> 

나는이 방법을 나는 UDF를하는 것과 같은 방식으로 호출 할 수 있도록하고 싶습니다 :

<cfset myReturnVar = MyComponent.myStaticMethod(blah)> 

이,하지만 작동하지 않습니다. 내가 엉망이되고있는 문법이 있습니까? 그렇지 않습니다.

+0

이 귀하의 질문에 직접 대답은 아니지만 당신이 다음 홀로되어 cfinclude 서 호출 할 수 있도록 당신이 자신의 파일에 정적 메서드처럼 행동 할 방법을 넣어, 유지 mixin과의 긴밀한 뭔가를 할 수있는 CFC에있는 파일. CFINCLUDE에는 몇 가지 캐싱 함의가 있지만 생각할 가치가 있습니다. – kevink

답변

5

ColdFusion에는 "정적 방법"이 없으므로 불가능합니다. 먼저 객체를 생성 할 필요가

myReturnVar = CreateObject("component", "MyComponent").myStaticMethod(arg1="blah"); 
+0

고마워, 그럴 수도 있다고 생각했지만 확신 할 수 없었다. – derivation

+0

한 가지 명심해야 할 것은 CreateObject를 사용하여 Java 객체를 만드는 경우 여기에서와 같은 작업을 수행 할 것입니다. (init을 호출하지 않음으로써) 클래스에 대한 정적 참조를 만들어야합니다. 정적 메소드를 호출하기 전에. – ryber

+0

또한 직관적 인 것처럼 보일지라도 내부적으로 CF에 더 효율적이기 때문에 이상을 선호합니다. – Bialecki

3

:로

귀하의 질문에 <cfinvoke> 라인은 동일합니다.

<cfset MyComponent = createObject("component","MyComponent") /> 
<cfset myReturnVar = MyComponent.myMethod(blah) /> 
+0

이것은 헨리가 쓴 것과 동일합니다. 이유는 확실하지 않습니다. – ryber

관련 문제