我的组件类似于扩展components.pdf
的组件
<cfcomponent extends="components.pdf" >
<cffunction name="generate" access="public" >
<cfscript>
config = {
.....
};
oWriter = CreateObject("component","writers.pdf").init( config );
</cfscript>
</cffunction>
</cfcomponent>
使用某些设置在initilize oWriter
组件中的generate函数内。
调用oWriter
组件的init方法后,我认为它包含我设置的配置选项。但是当我在oWriter方法中转储配置结构时,我得到了components.pdf
中设置的设置/选项
这些设置/配置如何覆盖?
答案 0 :(得分:0)
让我们调用您在上面定义的组件:PdfGen。您获得的行为是因为变量config仅在PdfGen的上下文中定义。因此,只要generate()函数处于活动状态,config就作为oWriter对象的属性存在。生成函数的结束标记运行后,config将不再作为oWriter或任何其他writer.pdf对象的字段存在。
您可以按如下方式获得所需的结果。将上面的组件(我称之为PdfGen)重新定义为:
SELECT
PRHeader.PrId, Count1 'Number Of Actions', Count2 timeInHandoverExternal
FROM
PRHeader
JOIN
(SELECT COUNT (ActionId) Count1
FROM PRAction
GROUP BY PrId) A ON A.PrId = PRHeader.prid
LEFT JOIN
(SELECT
COUNT(PRStatusChangesLog.EffectiveMinutes) Count2, PrId, StatusId
FROM
PRStatusChangesLog
WHERE
StatusId = 4100
GROUP BY
PrId, StatusId) B ON B.PrId = PRHeader.PrId
WHERE
DATEDIFF(mm, prheader.ClosedDate, getdate()) = 1
AND (PRHeader.siteId = 74 )
AND prheader.PRTypeId IN (17,19)
AND PRHeader.tmpStatusId <> 6010
然后沿着以下几行定义 writers.pdf :
<cfcomponent extends="components.pdf" >
<cffunction name="generate" access="public" returntype="any">
<cfscript>
config = {
configKey = "some value"
};
oWriter = CreateObject("component","writers.pdf").init(config);
return oWriter;
</cfscript>
</cffunction>
</cfcomponent>
用于测试此内容的CFM页面将类似于:
<cfcomponent>
<!--- Component instance variable. Every writers.pdf object (defined through init) will have it--->
<cfset config = "">
<cffunction name="init" access="public" returntype="any">
<cfargument name="configArg" >
<cfset config = arguments.configArg>
<cfreturn this>
</cffunction>
<cffunction name="getConfig" access="public" returntype="any">
<cfreturn config >
</cffunction>
</cfcomponent>