要在模型中包含方法还是不包括?

时间:2011-03-28 16:32:36

标签: php

我有一个作为图像模型的类:

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';
}

2 个答案:

答案 0 :(得分:2)

我可能会写一个ImageDataPresenter类并用它来将丑陋的Image属性“翻译”成漂亮的人类可读文本。

$presenter=new ImageDataPresenter($imageobj);
echo $presenter->enabled; //'yes'

答案 1 :(得分:1)

模型应仅用于仅与数据源交互,并将数据源结果返回给控制器。

您应该在控制器中创建函数,或者应该将其创建为帮助程序并将值转换为显示格式。

Helper只是帮助视图使用最少的逻辑。