在MVC模式中转换表单数据的最佳位置

时间:2013-11-22 10:22:34

标签: php security model-view-controller

假设模型将数据插入数据库。

class Model
{
    public function insert($value) {
        // putting $value to database to integer field
    }

}

我想通过$value(int) $value转换为int,以防止插入非数字值。

我应该在哪里这样做?在模型方法中还是在控制器中?

class Controller
{
    public function indexAction() {
        $model = new Model;
        $model->insert($_POST['user_id']);
    }
}

3 个答案:

答案 0 :(得分:0)

  1. 对于PHP来说,一个值是数字字符串还是integer几乎没有任何区别,它只是以相同的方式使用它并在实际需要时隐式转换。
  2. 如果这实际上是一个问题,控制器在逻辑上是正确的地方。数字是数字字符串而不是整数是输入方法独有的问题,如果您将以特定形式获取输入并以标准格式将其传递给模型,则控制器是“输入适配器”。 LI>

答案 1 :(得分:0)

控制器只接受用户输入并向模型提供数据。控制器不应该对数据库和存储格式一无所知。从理论上讲,您可以使用其他数据类型将一个数据库更改为另一个数据库,这将是您的模型的问题,而不是控制器。

答案 2 :(得分:0)

你应该只在控制器中完成... bcz这是我能说的最佳实践......

所以从控制器你可以将$value转换为(int)形式并发送

你可以在控制器

中完成
 $data = (int) $value;
 $model->interst($data);