如何使用业务对象在Codeigniter中包装逻辑?

时间:2012-11-01 14:01:45

标签: php codeigniter activerecord business-logic

我一直在使用Codeigniter,我想拥有处理逻辑的业务对象,如下所示:

$comment = new Comment($this->input->post());
$blog = new Blog();
$current_post = $blog->get_current_post();
$current_post->add_comment($comment);

$data['current_post'] = $current_post;
$this->load->view('post_view',$data);

而不是这种方法:

$this->load->model('comment_model');
$this->load->model('blog_model');
$this->load->model('post_model');

$comment = $this->comment_model->create_from_array($this->input->post());
$blog = $this->blog_model->get_blog();
$current_post = $this->post_model->get_current_post($blog);
$this->post_model->add_comment($current_post,$comment);

$data['current_post'] = $current_post;
$this->load->view('post_view',$data);

1 个答案:

答案 0 :(得分:0)

你想要的是改变codeigniter的工作方式,而不加载模型它将如何知道从哪里获取数据?如果你想按照你的建议去做,你将不得不扩展Core控制器类并对你的代码做出很多假设。例如,当你创建一个新的实例Comment()时,它应该加载一个模型,传递给它的参数应该访问该模型中的某个方法。

你只需要为已经存在的功能做一个很好的包装,这很好,但最后你的代码可能看起来更好但它仍然可以工作。