我有一組類保存數據庫的狀態。它就像一個微型ORM模式。因此,對於這個解決方案,我在幾桌動態屬性的類的結構加載,使得類看起來是這樣的:動態創建私有變量?
- 對象
- [tbl_name]
- ATTRIBUTE1
- attribute2
- attribute3
- [tbl_name]
- ATTRIBUTE1
- attribute2
- attribute3
- [tbl_name]
所有的屬性是公共屬性,因爲我有這樣的設置他們:
$object->{$table_name}->{$attribute} = 'foobar';
我」什麼d就像這些動態設置的屬性一樣是私人的。爲什麼?因爲,請不要錯過這裏的諷刺,我想通過使用__get()和__set()的重載getter/setter讓它們再次公開。我們再次回到原因的問題。實際上,「獲得」我可以用公共財產罰款,但爲了設置我想在應用設置之前應用一些邏輯。這裏是我簡化的__set()函數,它讓你知道我想要實現什麼:
public function __set ($property , $value) {
if (!in_array ($property , $blocked_properties)) {
$this->property = $value;
$this->trigger_event ($property);
}
}
有意義嗎?我很高興通過其他方式解決這個問題,但是如果我只能動態地設置私有實例變量,這看起來像是一種非常優雅的方式。
爲什麼不使用「真正的」ORM像教條2? http://www.doctrine-project.org/ –
學習曲線。矯枉過正。靈活性。不知道最後一個,但我有一些想法,我想將我的Enum對象分配給可能不支持ORM的屬性等。 – ken