📅  最后修改于: 2023-12-03 15:17:45.207000             🧑  作者: Mango
在 Codeignitor 中,MVC(模型-视图-控制器)是一个重要的架构模式,被用来组织 web 应用程序的代码。MVC 把应用程序分成三个部分:模型(Model)、视图(View)和控制器(Controller),每个部分都有着不同的职责。
模型层是负责数据处理和操作的部分。它通常用于操作数据库和处理数据对象,在 Codeignitor 中,模型通常定义为类(Class)。
模型通过将数据从数据库中提取出来、对数据进行过滤和操作,为控制器(Controller)提供必要的数据。
以下是一个简单的模型类的示例:
class User_model extends CI_Model {
public function __construct(){
parent::__construct();
}
// 获取用户信息
public function get_user($id){
$query = $this->db->get_where('users', array('id' => $id));
return $query->row();
}
// 创建新用户
public function create_user($data){
$this->db->insert('users', $data);
return $this->db->insert_id();
}
// 更新用户信息
public function update_user($id, $data){
$this->db->where('id', $id);
$this->db->update('users', $data);
return $this->db->affected_rows();
}
// 删除用户
public function delete_user($id){
$this->db->where('id', $id);
$this->db->delete('users');
return $this->db->affected_rows();
}
}
视图层是用于展示数据和接收用户输入的部分,它负责把数据渲染为 HTML 页面,并向用户呈现。
视图通常是一个 HTML 文件与 PHP 代码混合的文件。在 Codeignitor 中,视图文件通常保存在 application/views 目录下。
以下是一个简单的视图文件的示例:
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>User Profile</title>
</head>
<body>
<h1>User Profile</h1>
<p><strong>Name:</strong> <?php echo $user->name; ?></p>
<p><strong>Email:</strong> <?php echo $user->email; ?></p>
</body>
</html>
控制器是用于接收和处理用户请求的部分,控制器通常会在模型层获取数据,并把数据传递给视图层进行渲染。
在 Codeignitor 中,控制器通常定义在 application/controllers 目录下。以下是一个简单的控制器示例:
class User extends CI_Controller {
public function __construct(){
parent::__construct();
}
// 查看用户信息
public function view($id){
$this->load->model('user_model');
$data['user'] = $this->user_model->get_user($id);
$this->load->view('user_view', $data);
}
// 新建用户
public function create(){
$this->load->model('user_model');
$name = $this->input->post('name');
$email = $this->input->post('email');
$data = array('name' => $name, 'email' => $email);
$user_id = $this->user_model->create_user($data);
redirect('user/view/' . $user_id);
}
// 更新用户信息
public function update($id){
$this->load->model('user_model');
$name = $this->input->post('name');
$email = $this->input->post('email');
$data = array('name' => $name, 'email' => $email);
$rows_affected = $this->user_model->update_user($id, $data);
redirect('user/view/' . $id);
}
// 删除用户
public function delete($id){
$this->load->model('user_model');
$rows_affected = $this->user_model->delete_user($id);
redirect('user');
}
}
以上是 MVC 在 Codeignitor 框架中的基本工作方式介绍,通过使用 MVC 分离每个部分的职责,可以使得代码更加易于维护、测试和扩展。