Почему мое свойство не устанавливается в cfscript?

В настоящее время я создаю свой собственный MVC в ColdFusion 9 (cfscript), и по какой-то причине у меня возникают небольшие проблемы с созданной мной базовой моделью.

    public function init(required itemName){
    var columns = {};
    var result = '';
    var type = '';
    var length = '';
    var key = '';
    var field = '';
    var allowNull = '';

    setModel(itemName);

    this.table = this.model.tableName();

    this.qdb = request.qwerkfactory.newQDB();
    this.qdb.init(tableName = this.table);
    this.qdb.getTableAttributes();
    this.result = this.qdb.execute().getResult();

    for(i = 1; i LT this.result.recordcount; i++){
        result = this.result;

        type = ReReplaceNoCase(result['type'][i], '[0-9()]', '', 'all');
        length = ReReplaceNoCase(result['type'][i], '[a-z()]', '', 'all');
        key = (len(result['key'][i])) ? result['key'][i] : false;
        field = result['field'][i];
        allowNull = result['null'][i];

        columns["#field#"] = {};
        columns["#field#"].type = "#type#";
        columns["#field#"].length = "#length#";
        columns["#field#"].key = "#key#";
        columns["#field#"].null = "#allowNull#";
    }

    setTableAttributes(columns); 

    return this.model;
}

Это мой метод, который действует как метод конструктора для моего компонента модели. Что он делает, так это получает схему таблицы для конкретной таблицы, а затем возвращает ее модели, которая наследует этот базовый класс. Однако я определил свойство для компонента с именем tableColumns, когда установил его в методе установки:

    public function setTableAttributes(required struct attr){
    this.tableColumns = arguments.attr;
}

В этот момент он устанавливает его нормально, когда я пишу Dump() this.tableColumns, он возвращает правильный результат. Но при использовании геттера он говорит, что tableColumns не определено в этом. Что я делаю не так?


person db998    schedule 13.09.2014    source источник
comment
Кроме того, QDB — это мой уровень абстракции базы данных для фреймворка, на который ссылается мой код.   -  person db998    schedule 13.09.2014
comment
Когда вы говорите, что используете геттер, вы имеете в виду, что у вас есть функция, которая возвращает this.tableColumns?   -  person James A Mohler    schedule 14.09.2014


Ответы (1)


Проблема заключается в том, что вы используете область this. Свойства CFC хранятся в области variables CFC, которая отличается от this.

Просто измените свой код выше, чтобы использовать область variables вместо области this, и ваши геттеры будут работать должным образом.

person Scott Stroz    schedule 13.09.2014