由于有人离开了我要维护的公司,因此我收到了一些ColdFusion代码。问题是我上一次查看ColdFusion代码大约是10年前了,所以我完全迷路了,我从头开始。
我的问题是我试图找到组件或代码以及下面显示的代码中正在调用的内容。
<cfinvoke component="_admin_tools_kms" method="listKMSUsers" returnVariable="getKMSUsers">
<cfinvokeargument name="argFullAccount" value="1" />
</cfinvoke>
我知道这将返回该系统的用户列表,但是我无法找到进行该调用的确切代码。该组件名称“ _admin_tools_kms”应该是某个位置的 cfm 文件的名称,还是仅仅是以某种方式创建的引用名称?
答案 0 :(得分:3)
让我们分解一下:
<cfinvoke
component="someComponent"
method="someFunction"
returnVariable="someVariable">
<cfinvokeargument name="someArgument" value="foo" />
</cfinvoke>
属性component
是扩展名为.cfc
的文件的名称,或者是包含该组件实例的变量。如果它是一个变量,则将其称为#someComponent#
。
如果其中只有一个简单值,则可能是同一文件夹中有一个名为someComponent.cfc
的文件。
如果其中有一个点分隔的值,例如cfc.services.someComponent
,
/cfc/
的Web根目录下查找一个文件夹,其中包含另一个文件夹/services/
,您将在其中找到文件someComponent.cfc
。Application.cfc
文件中查找一个ColdFusion映射,该映射创建别名cfc
并将其映射到所需的文件夹。 但是,我更喜欢对引用的方法而不是组件进行简单的文本搜索。该功能可能存在于引用的组件或文件之外的其他组件或文件中。
由于CFC可以扩展另一个CFC,因此可能存在parentComponent.cfc
扩展的someComponent
,其中实际上包含有问题的方法。更糟糕的是,文件someComponent.cfc
可能包含其他文件,其中一个包含该方法。唯一的缺点是该函数的名称是否很常见,例如create
。