是否值得在将控制器传递给模型之前在控制器中创建一个对象?

时间:2012-08-26 21:30:39

标签: php oop codeigniter

我正在Codeigniter中创建一个投资组合页面,我也在为该网站配备一个简单的CMS。

我有一个控制器,可以按如下方式创建投资组合项目:

public function create_portfolio()
{
    $this->load->model('portfolio_model');
    $this->portfolio_model->insert(
        $this->input->post('title'),
        $this->input->post('short_description'),
        $this->input->post('complete_description'),
        $this->input->post('github'),
        $this->input->post('url')
    );
}

面向对象的方法是这样的:

public function create_portfolio()
{
    $this->confirm_login();

    $this->load->model('portfolio_model');
    $portfolio = new Portfolio(
        $this->input->post('title'),
        $this->input->post('short_description'),
        $this->input->post('complete_description'),
        $this->input->post('github'),
        $this->input->post('url')
    );

    $this->portfolio_model->insert($portfolio);
}

随着雇主越来越多地寻求具有OOP技能的人,我正试图评估后一种方法是否有效。最后,我所拥有的模型最终将从Portfolio对象访问所有实例变量,以便插入数据库(我没有使用ORM)。

在将所有输入字段传递给对象之前,是否有任何意义将其传递给模型?我可能用错误的方式来表达这个问题,但我很乐意接受你的意见。

1 个答案:

答案 0 :(得分:0)

由于您将值传递给构造函数,构造函数可能会对输入进行验证以确保其有效或执行某种其他处理

$portfolio->title可能不等于$this->input->post('title');

所以选项2会更好。