2014-09-13 2 views
0

В настоящее время я создаю свой собственный MVC в ColdFusion 9 (cfscript), и по какой-то причине у меня возникают небольшие проблемы в базовой модели, которую я создал.Почему моя собственность не установлена ​​в 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; 
} 

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

+0

Кроме того, QDB - это мой уровень абстракции базы данных для фреймворка, который является ссылкой на мои капли кода. – davidbenjamin998

+0

Когда вы говорите, что используете геттер, вы говорите, что у вас есть функция, которая возвращает 'this.tableColumns'? –

ответ

2

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

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

Смежные вопросы