我有一堆cfc
文件(正在运行coldfusion8
),其中包含cfswitch
捆绑的类似功能(用户、搜索、...)。
一些 cfc 文件变得太大,所以我收到一个Invalid method Code length 72645
我假设的内容,“你的文件太大而无法解析”..
我通常会在大约 2000 行时达到这一点,并认为这……不多。
由于我在一堆文件上突破了这个上限,我正在考虑添加另一个功能层 = 从 switch 语句中删除所有函数,并cfinvoke
为每个函数使用单独的 cfc 调用。
问题:
我的应用程序不是那么大,所以我想知道,有没有办法绕过“you-can't-have-more-than-2000-lines-in-a-cfc”的上限,如果不是,为应用程序中要调用的每个主要方法使用单独的 CFC/组件是否可行?
谢谢!
编辑:回复:“计划中” :-)
目前我的 CFC 的结构如下:
<cfcomponent extends="controllers.main" output="false" hint="handle all user interactions">
<cfscript>
VARIABLES.Instance.Validation = {
// all user-relate form fields including validation method to call (pass = no validation)
id="spec_id"
, corp="pass"
...
};
</cfscript>
<cffunction name="Init" access="public" returntype="any" output="false" hint="Initialize form data">
<cfreturn true />
</cffunction>
<cffunction name="Defaults" access="public" returntype="struct" output="false" hint="Assign defaults">
<cfscript>
// form default values assigned to instance
var formDefaults = {
id=""
, comp=""
...
};
</cfscript>
<cfreturn formDefaults />
</cffunction>
<cffunction name="Commit" access="remote" returntype="struct" output="false" hint="Main handler">
<cfscript>
// all var declarations
var userID = "";
var strRememberMe = "";
var timestamp = now();
...
var defaultValues = THIS.Defaults();
var LOCAL = {};
structAppend(defaultValues, VARIABLES.Instance.FormData);
LOCAL.User = defaultValues;
LOCAL.User.timestamp = timestamp ;
</cfscript>
<!--- the switch --->
<cfswitch expression = #LOCAL.User.submitted_form#>
... lot of stuff ...
</cfswitch>
<cfreturn LOCAL.Response />
</cffunction>
<!--- UTILITY FUNCTIONS --->
<cffunction name="Validate" access="public" returntype="array" output="false" hint="validate form inputs">
<cfscript>
var LOCAL = {};
var double = structNew();
double.criteria = VARIABLES.Instance.Validation;
double.form = VARIABLES.Instance.FormData;
</cfscript>
<!--- Get error name and type --->
<cfinvoke component="form_validate" method="validate_fields" double="#double#" returnvariable="validation_errors"></cfinvoke>
<cfset LOCAL.ErrorMessages = validation_errors />
<cfreturn LOCAL.ErrorMessages />
</cffunction>
</cfcomponent>
现在我一直在写很多非结构化的东西,但是在功能性cfcs 中拆分然后像这样处理它们对我来说似乎并不是很“没有计划”。
如果是这样,那么设置它的更好方法是什么,因为无论如何我都必须重新做?交换机将有大约 15 个案例,这是我使用的所有主要 cfcs 的平均值。
谢谢!