大致來說:這是我會怎麼做:
存儲在SQL或XML數據。您需要兩個SQL表格,一個用於學生,另一個用於課程。您可以使用一個包含所有數據的XML文件,也可以使用兩個文件(我推薦)。
與像一個屬性創建一個名爲類,例如,dataItem
「$ arr_fields」對應於單個數據記錄(在SQL表中的一行,或XML記錄)。
的DataItem的類應該有以下方法(所有公共):
loadFromSQL()
(或loadFromXML()
)
- saveToSQL()(或saveToXML())
add()
,edit()
和delete()
- a
view()
使用HTML的方法
- 這些方法顯然是你的sed在SQL/XML數據和類的$ arr_fields之間讀取和寫入數據,並在$ arr_fields中顯示數據。 $ arr_fields的鍵是特定SQL表的SQL列名稱(或XML標記或屬性名稱)。
儘量不要在構造函數或其他任何用於修改類數據的方法中調用loadFromSQL()或saveToSQL()。保持這些行爲分開。編輯:這是一個個人喜好,它可以幫助我跟蹤我的對象的狀態。
創建擴展dataItem類的Student和Course類。
如果需要,您可以在擴展類中覆蓋方法,例如view()
方法。
然後,您可以從管理對象(如rcdmk建議)或可能從StudentFolder和CourseFolder類中調用學生和課程中的方法,其中的view()方法包含需要執行的操作的按鈕。 (讓StudentFolder和CourseFolder擴展您創建的Folder類)。
UPDATE:
例如:如果在一個SQL表的主鍵是id
,那麼的DataItem的loadFromSQL($ ID,$表名)應該設置$ arr_fields以便其鍵列名和它的值是來自主要值等於$ id的行的值。
學生,則可以覆蓋loadFromSQL()如下:
class Students extends dataItem {
// other attributes
public function loadFromSQL($id) {
parent::loadFromSQL($id, "Students");
}
}
編輯:複議,它可能是最好設置$ arr_fields [ 「ID」] = $ ID,也可以設置$表名用dataItem的構造函數 - 那麼你不必重載loadFromSQL()或爲它指定參數。 loadFromSQL()應該隨後加載記錄(如果存在)。如果設置了$ arr_fields [「id」],saveToSQL()應該在SQL中保存$ arr_fields,如果未設置,則創建新記錄。無論如何,您必須找到與您的數據交互的一致方式,這些只是可能性。但是,如果您對OOP和SQL或XML沒有經驗,那麼您可能會爲自己打開一堆蠕蟲,而僅使用函數和php數組來處理您的數據可能更好。除非你有一些時間學習...
「它是編程OOP的最佳編程實踐」 - 說誰? – 2012-03-25 18:53:39
閱讀這兩本書http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882和http://www.amazon.com/Applying-Introduction-Object-Oriented-Iterative-Development/dp/B003MV55EA/ref = sr_1_76?s = books&ie = UTF8&qid = 1332549040&sr = 1-76 – Songo 2012-03-25 18:54:30
@OliCharlesworth好的,在我收到的書中解釋說,大多數語言都是朝着OOP方向發展,這可能不是最佳實踐,但而是我的技能的一個很好的補充。 – grasshopper 2012-03-25 18:58:27