我有一个作为图像模型的类:
class Image
{
public $imageId;
public $title;
public $description;
public $filename;
public $enabled;
public $galleryId;
public $galleryName;
public $orderNum;
}
我还有一个类ImageMapper
,它从数据库中获取有关图像的信息,并使用适当的数据填充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';
}
答案 0 :(得分:2)
我可能会写一个ImageDataPresenter
类并用它来将丑陋的Image
属性“翻译”成漂亮的人类可读文本。
$presenter=new ImageDataPresenter($imageobj);
echo $presenter->enabled; //'yes'
答案 1 :(得分:1)
模型应仅用于仅与数据源交互,并将数据源结果返回给控制器。
您应该在控制器中创建函数,或者应该将其创建为帮助程序并将值转换为显示格式。
Helper只是帮助视图使用最少的逻辑。