gpt4 book ai didi

oop - ColdFusion 9 CFScript 私有(private)属性和公共(public)属性

转载 作者:行者123 更新时间:2023-12-01 13:08:48 24 4
gpt4 key购买 nike

有没有办法让 isDevMode、devModeToEmailAddress、devModeFromEmailAddress 成为私有(private)属性?

代码:

/**
* email
* @accessors true
*/
component email output="false" hint="This is email object." {

/* properties */
property name="toEmailAddress" type="string";
property name="fromEmailAddress" type="string";
property name="subject" type="string";
property name="body" type="string";
property name="attachments" type="array";

/*
private isDevMode
private devModeToEmailAddress
private devModeFromEmailAddress
*/

}

最佳答案

您可以添加 setter="false"getter="false" 来防止 getter 和 setter,但您不能直接限制对属性的访问。最好的办法是将它们放入组件本地范围内的构造函数中。

/**
* email
* @accessors true
*/
component email output="false" hint="This is email object." {

isDevMode = false;
devModeToEmailAddress = "foo@foo.com";
devModeFromEmailAddress = "bar@foo.com";

/* properties */
property name="toEmailAddress" type="string";
property name="fromEmailAddress" type="string";
property name="subject" type="string";
property name="body" type="string";
property name="attachments" type="array";


}

然后,当您需要使用它们时,只需在任何函数中引用 variables.isDevMode 即可获取值。如果您需要在运行时设置它们,您可以在函数的 init() 方法中设置它们。我通常这样做:

component email output="false" hint="This is email object." {

instance = {};

/* properties */
property name="toEmailAddress" type="string";
property name="fromEmailAddress" type="string";
property name="subject" type="string";
property name="body" type="string";
property name="attachments" type="array";


public email function(required boolean isDevMode, required string devModeToEmailAddress, required string devModeFromEmailAddress){

variables.Instance.isDevMode = Arguments.isDevMode;
variables.Instance.devModeToEmailAddress = Arguments.devModeToEmailAddress;
variables.Instance.devModeFromEmailAddress = Arguments.devModeFromEmailAddress;

{

}

然后,只要我需要这些值,我就可以得到 variables.Instance.isDevMode。我还创建了一个通用的 get() 方法,它将返回 variables.instance,这样我就可以看到里面有什么。

public struct function get(){
return Duplicate(variables.Instance);
}

但是因为它们在组件局部变量范围内,所以不能从组件外部修改它们。

关于oop - ColdFusion 9 CFScript 私有(private)属性和公共(public)属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7637233/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com