如何在不使用cfinvoke的情况下在CFC上运行静态方法?

问题描述:

如何在不使用cfinvoke的情况下在CFC上调用静态方法?我知道我能做到这一点:如何在不使用cfinvoke的情况下在CFC上运行静态方法?

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

我希望能够调用该方法以同样的方式我会一个UDF:

<cfset myReturnVar = MyComponent.myStaticMethod(blah)> 

然而,这是行不通的。有没有我搞乱的语法,或者这是不可能的?

+0

这不是直接回答你的问题,但你可以做一些亲近混入,只要把你要像在自己的文件中的静态方法的方法,所以你可以把它独立则CFINCLUDE那在您的CFC文件。 CFINCLUDE有一些缓存含义,但值得考虑。 – kevink 2010-01-16 13:45:35

不可能,因为ColdFusion中没有“静态方法”。

<cfinvoke>线在你的问题是一样的:

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

谢谢,我认为可能是这种情况,但不确定。 – derivation 2010-01-15 19:56:19

+0

要记住的一件事是,如果你使用CreateObject来创建一个JAVA对象,那么你会做同样的事情,在这里....你必须做一个类的静态引用(通过不调用init)..在调用静态方法之前。 – ryber 2010-01-16 03:30:16

+0

另外,你应该比更喜欢这个,因为它对于CF来说效率更高,尽管这看起来可能违反直觉。 – Bialecki 2010-01-16 05:44:19

您需要先创建对象。

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

这和亨利写的一样,不知道为什么这是downvoted – ryber 2010-01-16 03:28:09