我正在瀏覽一個對象列表,它們都具有相同的父類,但它們可以是來自許多子類之一的實例。根據對象的真實類型,我想執行稍微不同的操作。如何根據對象的真實類名運行代碼?
如何根據對象類型運行不同的代碼塊?
在Java中,我會重載一個處理函數,每種類型我都想處理,但PHP不允許這樣做。
背景: 對戈登的評論。
我們正在從一組對象構建表單。超類組件,擴展後表示特定類型的表單元素。 TextInput extends Component
和組件有能力容納其他組件。我們不希望他們對其實際表示負責。
我們正在努力構建HTML,但我們可能希望使用它們來構建.PDF或其他格式。
所以我們有遍歷組件的代碼,並遞歸地通過它包含的組件。根據組件的類型,我們需要創建不同的輸出。
請爲您的問題提供更多背景。感覺就像你在爲錯誤的問題尋求解決方案。這聽起來像對我來說放錯了方法。不要查詢對象的類型,然後做一些事情,告訴對象做些什麼。這叫做「不要問」。 – Gordon
@戈登編輯了一些背景。我們不希望這些對象負責它們的輸出,所以Tell Do not Ask不會工作。 – Chris