我有兩個類:如何在沒有構造函數的情況下強制實現類變量的初始化?
抽象實體,摘要ClassA的延伸實體,ClassB的擴展ClassA的
實體是所有類型的實體,如汽車或學生的泛型類。有一個名爲$_entity_name
的靜態類變量,它包含ER圖中實體的確切類名。
大問題:實體無法設置此變量的值,但使用它!所以我必須在實體中定義它,但我不能在ClassA中重新定義它。
ClassA是特殊ORM實體的自動生成基類(可以說是「學生」)。用戶應該繼承這個基類以添加他自己的業務邏輯。
ClassB由用戶創建並擴展ClassA。這是他添加業務邏輯的地方。他不應該觸摸$_entity_name
或設置此值。
我看到的唯一方法是這樣的:
ClassA的定義哪些初始化這些「系統級」的實例變量爲合理值的init()方法。
我希望用戶不必考慮任何不尋常的事情。我不知道是否通常在PHP中明確地調用父類的構造函數,或者不。但我想這不是。
問題: A)在實例化類之後調用init()的最方便的方法是什麼? B)有沒有辦法以這種方式實現這一點,即創建ClassB的用戶一定不會想到調用init()? C)我還有什麼其他選擇?
至於調用父類的構造。如果父類具有定義的構造函數,而子類沒有,則在創建子類的對象時將調用父類的構造函數。你也可以在調用父構造函數的子類中定義一個構造函數{parent :: __ construct(); }然後再做其他事情。 – RMcLeod 2010-01-05 11:57:08