我在哪里操作和清理MVC PHP中的数据库数据?

时间:2014-01-31 20:40:29

标签: php database-abstraction

假设我的模型User_model带有get_all_users()函数:

Class User_model {
    function get_all_users() {
        $query = $this->db->query("SELECT * FROM users");
        return $query->result(); // Returns array with data
    }
}

在我的应用程序中,我将清理数据以进行输出?到目前为止,我已经在get_all_users()中通过循环结果并返回一个包含santizied和操作数据的数组来完成此操作。问题就在这里:假设我的数据库表中有一个日期字段,我希望以不同的方式格式化,具体取决于用户所在的页面。或者我需要运行htmlspecialchars()上的一些数据。

我想到的第一个想法是清理和格式化我的视图中的数据,但它感觉不对。我应该在视图和模型之间有一些层来完成这项工作吗?在那种情况下,它会如何运作?或者应该以某种方式处理它?<​​/ p>

3 个答案:

答案 0 :(得分:2)

强烈不同意布莱恩。

View是完全正确的选择。并且明确地只有 这样做。

只有视图知道数据的去向。如何转换数据完全取决于数据的去向 - HTML的具体方式(htmlspecialchars()),URL字符串(urlencode()),Javascript字符串(addslashes()或者最好json_encode()),一封电子邮件(quoted_printable_encode())....

  

假设我有一个日期字段......以不同的方式格式化我

这甚至不是一个消毒问题,这是一个展示问题 - 它仍然存在于视野范围内。

答案 1 :(得分:-1)

这很难,但我会在模型中提取数据,并在控制器中清理它。因此,如果数据库发生变化,您可以轻松修复查询

答案 2 :(得分:-1)

您还可以创建一个清理数据的视图助手,以便可以在所有视图文件中重复使用。