我使用CreateObject()
方法创建CFC的实例,然后与这个新创建的'实例进行交互。我之所以这样做,是因为它似乎已经完成了,但我不明白为什么要这样做。
为什么我们不能直接与CFC交互而不是创建它的实例?
答案 0 :(得分:5)
CFC只是一个包含一些代码的文件,所以建议与它“交互”是没有意义的,就像你建议在没有<cfinclude>
的情况下与CFM文件“交互”一样它或类似的。
CFC定义组件,并使用组件创建组件的实例。在某些语言中 - 例如Java - 可以拥有静态属性和方法,并且可以通过类而不是必需对象访问它们,但CFML没有这个概念。 CFC定义了用作对象的组件,就像在其他语言中一样,类定义它是一个对象,并且使用一个对象,首先需要创建它的实例。
答案 1 :(得分:4)
您可以使用cfinvoke直接调用cfc。您只需要意识到cfinvoke首先创建cfc的对象,然后执行您调用的方法。此外,一旦调用该方法,该对象就不再可用。
如果你的.cfm页面只使用组件的一个方法,那么cfinvoke就可以了,因为你编写的代码较少。但是,如果使用两个或更多,效率会降低,因为每次都必须创建一个新对象。
换句话说,虽然您不必先创建cfc的实例,但这样做通常是个好主意。
答案 2 :(得分:3)
我希望你已经阅读了OOP及其实践。 CFC是你的“蓝图”(比如汽车设计),对象是你自己的数据模型(比如一辆蓝色汽车(设置颜色的方法),氮气填充轮胎(设置轮胎压力的方法)和LPG上的运行(燃料类型的方法))。 CF允许您直接与CFC(CFINVOKE)进行交互,并且您不必每次都创建一个实例,但只是在您每次想要更改汽车配置时都不想去车间/设计实验室时才有意义