2011-06-03 53 views
0

所以,我努力學習和使用的部件,使我的代碼更好的getter,setter和組件問題...關於ColdFusion的8

我明白了什麼getter和setter方法是......不過,我我不確定在哪裏把他們關於我的組件如何工作。我的組件是一個擁有獨特身份和部門的教師。我希望我的所有信息都以結構形式存在,因爲每個教師都有很多信息。我的init方法會初始化特定實例的id和部門,然後繼續調用一個將其餘信息填充到結構中的查詢。我只是不知道如何做的ID和部門的getter和setter ...我只是初始化一個「空白」的實例,然後使用getter/setter實際上做輸入?

還有關於組件的另一個想法/問題: 我的組件應該只有處理單個實體(個體)的方法,還是我的組件中還可以有處理整體的方法(如所有個人的搜索功能) 。 ...或者我應該將兩者分開嗎?

謝謝!

回答

3

以下是設置CFC的CF8方法。請注意,當升級到CF9時,我沒有使用'實例'範圍',因爲您可以刪除getter/setters並將accessor=true添加到cfcomponent,就完成了。但是,當您需要將數據從CFC中取出爲DAO的結構來保存對象時,您可能會發現添加了一個人造的「實例」範圍。

<cfcomponent> 
    <!--- does nothing in CF8 other then for documentation purposes ---> 
    <cfproperty name="id"> 
    <cfproperty name="department"> 

    <!--- if you want to type your param and return type for functions in CF8, use CFML ---> 
    <cfscript> 
    function init (id, department) 
    { 
     setId(id); 
     setDepartment(department); 

     return this; 
    } 

    function getId() { 
     return variables.id; 
    } 

    function setId(id) { 
     variables.id = arguments.id; 
    } 

    // do the same for dept 
    // make use of Snippet in CFEclipse/CF Builder to gen for you 

    </cfscript> 

</cfcomponent> 

可我也有我的 組件與整個 交易(如搜索功能適用於所有 個人)的方法。 ...還是我應該分開 這兩個?

通常在CF的世界(由Java世界的啓發),我們希望他們沒有狀態分成FooService,並緩存你FooService如單在Application範圍。然後實現與數據庫(數據訪問對象)層交談的創建讀取更新刪除(CRUD)方法。然後,您的FooService將調用FooDAO中的CRUD方法來爲您讀取(並填充)Foo對象。

+0

下面是CF更新的最佳實踐之一:http://wiki.coldbox.org/wiki/DevelopmentBestPractices.cfm他們推薦使用'實例'範圍。 – Henry 2011-06-03 16:12:58

+1

非常感謝! – Bri 2011-06-03 16:40:17

+0

所以,可以說我有一個表格,爲教師提供信息。我想使用組件中的函數來使用表單中的信息更新數據庫。我真的需要製作這個實例嗎?我覺得這樣會毫無意義。 – Bri 2011-06-03 17:02:10