我有一個類用作用於圖像的模型:要在模型中包含方法嗎?
class Image
{
public $imageId;
public $title;
public $description;
public $filename;
public $enabled;
public $galleryId;
public $galleryName;
public $orderNum;
}
我也有一類,ImageMapper
其抓住關於從DB中的圖像的信息,並與適當的數據填充Image
對象起來。我不會告訴你ImageMapper
,因爲它是:-)
這裏一個非常討厭的一段代碼是我如何做到這一點的例子:
$image = new Image();
$image->imageId = $previouslyRetrievedId;
$imageMapper = new ImageMapper();
$image = $imageMapper->find($image->imageId);
我的問題是:我應該在哪裏有方法用於轉換關於圖像的信息。例如,Image類的$enabled
屬性在數據庫中由0或1表示。當我在要由人類讀取的頁面上顯示該屬性時,我寧願顯示「否」或「是」 , 分別。我是否應該包含一個函數來轉換Image類中的ImageMapper類的值,該頁面向用戶或其他位置顯示「是」或「否」?
我聽說在數據對象中包含函數是不好的,這就是我所說的Image對象。
下面是該方法我指的一個例子:
public function getEnabledAsText()
{
if(!$this->enabled) {
return 'No';
}
return 'Yes';
}
我原則上同意這一建議,但由於PHP沒有得到「朋友」類或同等學歷,圖像的成員都必須是公衆ImageDataPresenter在他們獲得。因此,在PHP中,我傾向於在Image類中至少提供setter和getter。 (我知道letseatfood已經讓它們全部公開,但總的來說,它們不應該沒有合理的理由而公開)。 – 2011-03-28 16:42:47
@Colin Fine:我將所有屬性都保護起來(除非我確定它們不會被擴展),並使用'__get()'和'__set()''magic'方法來處理這個問題。我沒有提到它,因爲我認爲它超出了問題的範圍。 – dnagirl 2011-03-28 17:05:55