Coldfusion如何在内部处理createObject?

leo*_*orn 3 coldfusion coldfusion-7

假设我想从cfscript块中的CFC调用静态函数.据我所知,唯一的方法是使用createObject()返回对CFC对象的引用.

这是好习惯吗?我想我记得读过cfinvoke肯定是巧妙地实现了对象,并且不会多次实例化静态CFC.这是否正确,如果是这样,使用createObject()时仍然如此吗?

Adr*_*eno 10

CFOBJECT

CFOBJECT实例化一个组件并为其创建一个变量.

<cfobject type="component" name="path.to.my.CFC" name="myCFC" />

CFINVOKE

然后CFINVOKE可以引用由CFOBJECT创建的变量,这样它就不必再次重新创建对象.

<cfinvoke component="#myCFC#" method="foo" returnVariable="myValue" />

因此,您可以根据需要调用尽可能多的CFINVOKE,#myCFC#而无需重新创建对象.

但是,如果您不使用CFOBJECT,CFINVOKE也可以隐式为您创建对象.

<cfinvoke component="path.to.my.CFC" method="foo" returnVariable="myValue" />

以这种方式调用多个函数将每次重新创建对象.

CREATEOBJECT

createObject()工作方式几乎相同.首先使用引用变量创建对象

<cfscript>
myCFC = createObject("component", "path.to.my.CFC");
myValue = myCFC.foo();
otherValue = myCFC.bar();
</cfscript>
Run Code Online (Sandbox Code Playgroud)

或者使用每个函数调用创建对象.

<cfscript>
myValue = createObject("component", "path.to.my.CFC").foo();
otherValue = createObject("component", "path.to.my.CFC").bar();
</cfscript>
Run Code Online (Sandbox Code Playgroud)

我更喜欢,createObject()因为我一直在使用CFSCRIPT.如果我打算从中调用多个函数,我总是先创建对象.