2010-01-15 131 views
2

如何在不使用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

回答

5

不可能,因爲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

3

您需要先創建對象。

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

這和亨利寫的一樣,不知道爲什麼這是downvoted – ryber 2010-01-16 03:28:09

相關問題