我已经为一些安全补丁编写了一个库.在该库中有许多CF8和up函数,属性等.
我真的不想削减功能,因为adobe无法将它整合在一起并将这些基本功能融入到CF7中,因此我希望在每个功能中分别编写代码.问题是当CF最初读取它发现的代码时,如果它发现它无法识别的东西,无论它是否将被调用.
例如,在cfdirectory中,CF7不支持'type'属性.当'type'属性存在时,我有一个在CF7中失败的find目录函数,并且取出它会使搜索时间增加10倍.
<cftry>
<cfdirectory action="list" directory="#arguments.start#" name="LOCAL.dirquery" type="dir" /><!---//GET QUERY OF DIRECTORIES IN START DIRECTORY--->
<cfcatch>
<cfsetting requesttimeout="600">
<cfdirectory action="list" directory="#arguments.start#" name="LOCAL.dirquery" /><!---//GET QUERY OF DIRECTORIES IN START DIRECTORY--->
</cfcatch>
Run Code Online (Sandbox Code Playgroud)
此代码不起作用,条件块也不起作用.我猜测读者无法用任何语言解析,因此失败了.
代码可能在编译时失败,而不是在运行时(需要查看您收到的错误以确定).如果是编译器错误,则需要在CF8 +功能的单独组件中分解CF7功能.然后在运行时检查CF版本以确定要调用的组件/功能.
下面是一些伪代码,您可以在应用程序启动时使用这些伪代码将正确的版本函数加载到内存中.这样,您就可以在代码中的任何位置调用函数.
伪代码:
onApplicationStart(){
if (server.coldfusion.productversion == 7){
application.cffunctions = CF7FunctionsComponent;
} else {
application.cffunctions = CF8FunctionsComponent;
}
}
Run Code Online (Sandbox Code Playgroud)
在任何其他地方,无论当前运行的CF版本如何,都可以调用相同的函数:
application.cffunctions.doSomething();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
60 次 |
| 最近记录: |