ColdFusion 9 CFScript Частные свойства и общие свойства - PullRequest
2 голосов
/ 03 октября 2011

Есть ли способ сделать isDevMode, devModeToEmailAddress, devModeFromEmailAddress частными объектами?

Код:

/**
* 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
*/

}

1 Ответ

7 голосов
/ 03 октября 2011

Вы можете добавить setter="false" и getter="false" для предотвращения получения и установки, но вы не можете напрямую ограничить доступ к свойствам. Лучше всего поместить их в свой конструктор в локальной области видимости компонента.

/**
* 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);
}

Но поскольку они находятся в области локальных переменных компонентов, их нельзя изменить извне компонента.

...