我已經建議使用映射器來分離db中的對象存儲和真實對象行爲,這聽起來像個不錯的主意。但是習慣於Java或SmallTalk等其他OOP語言,我總是儘量封裝我的對象。 我讀過幾個mappers的例子,其中一些直接訪問域對象的變量(這將是我最後的選擇,但我知道它更舒服)。PHP數據映射器setter/getters
我現在想出的唯一辦法是這樣的:
class User{
public __construct($mapped_data){
foreach($data as $key=>$value){
$this->$key=$value;
}
...
}
class UserMapper{
private populate($user,$db_data){
...
$map=array('id'=>'id','psw'=>'password','mail'=>'email', ...);
foreach($db_data as $key=>$value){
$mapped_data[$map[$key]]=$value;
}
return new User($mapped_data);
}
}
地圖是因爲該類用戶不必在所有知道的數據庫列名。
這種方法是否正確?有更好的嗎? 謝謝
除非您打算讓其他用戶可以使用該類,對我而言,這種方法只是膨脹。該類不會是獨立的,它仍然依賴於映射器而不是數據庫名稱。所以映射器就像一個配置文件。如果您打算將其提供給其他人,這將會很有用。恕我直言 –
所以我最好在班上爲每個變量都設置一個setter和getter? (或者只是讓它們全部公開)。 – Riskz