“我正在尝试在Lucee上使用合成的组件访问器(虽然这个问题在ColdFusion上看起来也是一样的)。
复现代码:”
注意我这里没有使用合成的访问器,我纯粹将参数值设置到同名的变量-作用域变量中。
然而当我运行这段代码时,我看到了以下内容:
另请注意,如果我修改CFC定义,将accessors设置为false,则转储将显示如下内容:
复现代码:”
// Person.cfc
component accessors=true {
property firstName;
property lastName;
function init(firstName, lastName){
variables.firstName = arguments.firstName;
variables.lastName = arguments.lastName;
}
}
而且呼叫代码:
// person.cfm
person = new Person("Abigail", "Bowen");
writeDump(person);
注意我这里没有使用合成的访问器,我纯粹将参数值设置到同名的变量-作用域变量中。
然而当我运行这段代码时,我看到了以下内容:
accessors
标志应该如何工作。我认为它仅仅是为我合成一些访问器方法(它确实做到了),但仅此而已。另请注意,如果我修改CFC定义,将accessors设置为false,则转储将显示如下内容:
因此,没有合成的访问器(如预期的那样),但现在属性甚至没有被显示(无论是使用变量作用域值还是不使用)。
我真的不明白这种“属性”和访问器设置的混淆?访问器设置是否只影响创建那些访问器方法?
如果我只在其中一个平台上看到了这个问题,我可能会归因于writeDump()
如何解释属性定义的差异。但是,在ColdFusion 11上的行为是相同的,所以似乎有一些行为上的差异我还没有完全理解。
有人能解释这个吗?有没有任何解释它的文档?如果没有...嗯...为什么没有呢?
我内心的担忧是,属性值没有被“正确地”存储,一旦我实现了更多的代码,就可能会给我带来麻烦。
更新:
至少在ColdFusion上,它似乎只是writeDump()
行为的改变,因为如果属性有getter(无论是否设置了accessors
标志),则属性值开始出现在dump中。但是,在Lucee上并非如此,因此仍然存在问号。