繼承我有一個基礎對象(form_field_base),其被擴展/其它對象的形式繼承:PHP和對象 - 延伸的公共對象,該對象的其他對象從
class form_field_base {
// Lots of code
}
class form_field_text extends form_field_base {
// Lots of code
}
class form_field_email extends form_field_text {
// Extending the text object to update validation, and set input type="email"
}
class form_field_file extends form_field_base {
// Lots of code, for example uploading files
}
的「form_field_base」規定所有表單字段類型使用的幫助器方法,例如html()函數調用特定對象(form_field_email :: html_input)以獲取字段,然後將其放入具有標準標記的字符串中,等等。
所有這些對象都被許多項目使用。
但是,我正在處理的這個最新項目需要定製「form_field_base」對象以允許設置一些幫助文本,這是沒有其他項目需要的功能,並且如果將來的項目需要,它可能會完成不同。
那麼這應該如何組織?
理想情況下,我不會擁有「form_field_base」的完整副本,因爲這會導致代碼重複。
而且它似乎是相當多的開銷有假中間對象:
class form_field_base_common {
// Lots of code
}
class form_field_base extends form_field_base_common {
// By default is empty
}
class form_field_text_common extends form_field_base {
// Lots of code
}
class form_field_text extends form_field_text_common {
// ...
}
class form_field_email_common extends form_field_text {
// Extending the text object to update validation, and set input type="email"
}
class form_field_email extends form_field_email_common {
// ...
}
class form_field_file_common extends form_field_base {
// Lots of code, for example uploading files
}
class form_field_file extends form_field_file_common {
// ...
}
以每一個都有它自己的文件,該文件是自動加載(無論是從項目的具體位置,如果它存在,或者來自所有項目都可以訪問的公共文件夾)...已經有8個文件需要被發現,打開,解析等,只是爲了支持表單。
蘇利必須有更好的方法嗎?
您是否嘗試過私人方法和數據?或者你是什麼意思?你是否需要隱藏來自後代的新功能,或者是否使用相同代碼庫的其他項目? – J0HN
更多的是,「form_field_base」已經非常大,並且爲一個小項目(當它被許多項目使用時)添加更多的功能/代碼似乎是浪費。 –