CI框架入门之MVC简单示例

下面我来详细讲解“CI框架入门之MVC简单示例”的完整攻略。

什么是CI框架

CI(CodeIgniter)是一款轻量级的 PHP 框架,具有体积小、执行速度快、具备 MVC 模式、开发灵活性高等特点。CI基于MVC(Model-View-Controller)设计模式,通过将应用程序分成三个互动的部分来增强应用程序的灵活性和可扩展性。这三个部分为模型(Model)、视图(View)和控制器(Controller)。

CI框架入门之MVC简单示例

环境搭建

首先,你需要安装好PHP和Apache环境,并在本地搭建好CI框架。

MVC设计模式

Model

Model是代表数据和业务逻辑的类,它能与数据库进行交互。在CI中,Model通常继承CI_Model类,可以使用一些内置的方法如查询、更新操作等。示例:

class User_model extends CI_Model {

    public function __construct()
    {
        parent::__construct();
        $this->load->database(); // 加载数据库类
    }

    public function get_all_users()
    {
        $query = $this->db->get('user');
        return $query->result_array();
    }

}

以上代码中,我们定义了一个User_model类,并继承CI_Model类,通过构造函数来加载数据库类,通过get_all_users方法可以获取到user表的所有数据。

View

View是用户展示数据的部分,通常为HTML代码,但可以嵌入PHP代码以便进行数据处理。在CI中,View使用PHP语言编写,并通过控制器将数据传递至View中。示例:

<!DOCTYPE html>
<html>
<head>
    <title>CI 框架示例</title>
</head>
<body>
<h1>用户列表</h1>
<table>
    <thead>
        <tr>
            <th>编号</th><th>姓名</th><th>年龄</th>
        </tr>
    </thead>
    <tbody>
        <?php foreach($users as $user): ?>
        <tr>
            <td><?= $user['id'] ?></td><td><?= $user['name'] ?></td><td><?= $user['age'] ?></td>
        </tr>
        <?php endforeach; ?>
    </tbody>
</table>
</body>
</html>

以上代码中,我们定义了一个用户列表的View,通过$users变量来获取到控制器传递过来的数据,并在HTML代码中进行展示。

Controller

Controller是连接Model和View的中间件,将业务数据传递给View,同时处理POST、GET等请求。在CI中,Controller通常继承CI_Controller类,可以使用内置的方法如load->view将数据传递给View。示例:

class User extends CI_Controller {

    public function __construct()
    {
        parent::__construct();
        $this->load->model('user_model');
    }

    public function index()
    {
        $data['users'] = $this->user_model->get_all_users();
        $this->load->view('user_list', $data);
    }

}

以上代码中,我们定义了一个User控制器,通过构造函数来加载User_model类,通过index方法来获取到user表的数据,并将数据传递给View。

使用示例

通过上述三个部分的分析,我们已经了解了CI框架下的MVC设计模式,并知道了如何创建Model、View和Controller,下面我们通过一个示例来演示如何使用CI框架。

创建数据库和数据表

在MySQL数据库中创建一个CI_demo数据库,执行以下SQL语句创建一个user数据表:

CREATE TABLE user (
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(30) NOT NULL,
    age INT(3) NOT NULL
)

创建Model

在models目录下创建user_model.php文件,输入以下代码:

class User_model extends CI_Model {

    public function __construct()
    {
        parent::__construct();
        $this->load->database();
    }

    public function get_all_users()
    {
        $query = $this->db->get('user');
        return $query->result_array();
    }

    public function insert_user($data)
    {
        $this->db->insert('user', $data);
    }

}

以上代码中,我们定义了一个User_model类,并继承CI_Model类。通过get_all_users方法可以获取到user表的所有数据。通过insert_user方法可以向user表中新增一条数据。

创建View

在views目录下创建user_list.php文件,输入以下代码:

<!DOCTYPE html>
<html>
<head>
    <title>CI 框架示例</title>
</head>
<body>
    <h1>用户列表</h1>
    <table>
        <thead>
            <tr>
                <th>编号</th><th>姓名</th><th>年龄</th>
            </tr>
        </thead>
        <tbody>
            <?php foreach($users as $user): ?>
            <tr>
                <td><?= $user['id'] ?></td><td><?= $user['name'] ?></td><td><?= $user['age'] ?></td>
            </tr>
            <?php endforeach; ?>
        </tbody>
    </table>

    <h1>新增用户</h1>
    <form action="<?= site_url('user/insert') ?>" method="post">
        <label>姓名:<input type="text" name="name"></label><br>
        <label>年龄:<input type="text" name="age"></label><br>
        <input type="submit" value="提交">
    </form>
</body>
</html>

以上代码中,我们定义了一个用户列表的View,通过$users变量来获取到控制器传递过来的数据,并在HTML代码中进行展示。另外,我们也定义了一个新增用户的表单,通过site_url方法设置表单提交的URL。

创建Controller

在controllers目录下创建user.php文件,输入以下代码:

class User extends CI_Controller {

    public function __construct()
    {
        parent::__construct();
        $this->load->model('user_model');
    }

    public function index()
    {
        $data['users'] = $this->user_model->get_all_users();
        $this->load->view('user_list', $data);
    }

    public function insert()
    {
        $data = array(
            'name' => $this->input->post('name'),
            'age' => $this->input->post('age')
        );
        $this->user_model->insert_user($data);
        redirect('user');
    }

}

以上代码中,我们定义了一个User控制器,通过构造函数来加载User_model类。在index方法中,我们获取到user表的数据,并将数据传递给user_list View。在insert方法中,我们获取到表单提交的数据,并调用User_model类中的insert_user方法向user表中插入数据,最后重定向到user控制器的index方法。

总结

通过上述示例我们已经对CI框架下的MVC设计模式有了深入的了解。在创建Model、View和Controller时,需要注意以下几点:

  1. Model类需要继承CI_Model类,并通过构造函数来加载数据库类。
  2. View使用PHP语言编写,并通过控制器将数据传递至View中。
  3. Controller类需要继承CI_Controller类,并通过构造函数来加载相关Model类。
  4. 控制器的方法对应了路由中的URL,所以需要注意方法名的规范。
  5. 在View中可以通过PHP标签来嵌入PHP代码,但需要注意安全问题。

以上就是CI框架入门之MVC简单示例的完整攻略,希望能对你的学习有所帮助!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:CI框架入门之MVC简单示例 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • C程序 检查一个数字是否可以表示为两个素数之和

    为了解决这个问题,可以采用“筛法”,即筛选素数,然后枚举其中的两个素数,判断它们的和是否等于给定的数字。 具体步骤如下: 先构造一个数组 marks,用于记录数字是否是素数。这里的实现用到了“埃氏筛法”。 int marks[MAX_N + 1]; // marks[i] 表示数字 i 是否为素数 memset(marks, 1, sizeof(marks)…

    C 2023年5月9日
    00
  • C语言编程之预处理过程与define及条件编译

    预处理器是C语言编程中非常重要的一个组成部分,它在编译前对源代码进行一系列的处理,比如宏定义、文件包含等操作。define指令是预处理器中最常用的指令之一,可以用来简化代码,并且可以通过条件编译指令来控制宏定义的区域,从而实现一些程序逻辑上的控制。 下面就是一个完整的攻略: 预处理过程 预处理器在编译前对源代码进行一系列的处理,这个过程称为预处理过程。预处理…

    C 2023年5月23日
    00
  • C Primer Plus (7.12) 編程練習

    /*C Primer Plus (7.11) 3*/ 1 #include<stdio.h> 2 int main() 3 { 4 double weight,height; 5 printf(“Please enter your weight and height.\n”); 6 printf(“Weight (pound):”); 7 sca…

    C语言 2023年4月18日
    00
  • Win11使用USB或type-c耳机音量默认100%怎么解决?

    当在 Windows 11 中使用 USB 或 Type-C 耳机时,可能会发现音量默认为 100% ,这可能会给你带来一些不便。这种情况可以通过以下方式解决: 1. 禁用默认通讯设备 Windows 中默认会将通讯设备(如耳机麦克风)设置为默认设备,这可能会导致音量设置失效。解决方法是: 在任务栏上右键单击音量图标,选择““声音”选项。 在弹出的“声音”设…

    C 2023年5月23日
    00
  • Python JSON格式数据的提取和保存的实现

    下面是“Python JSON格式数据的提取和保存的实现”的完整攻略。 JSON格式概述 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。JSON使用Unicode字符集,支持数字、字符串、布尔值、null、数组和对象,具有较高的可读性。 提取JSON数据 在Python…

    C 2023年5月23日
    00
  • C/C++ 获取Windows系统的位数32位或64位的实现代码

    获取Windows系统的位数(32位或64位)可以使用以下两个API函数: GetSystemWow64DirectoryA(): 该函数用于获取系统WoW64目录的路径,其中WoW64指的是Windows-on-Windows 64,它是一种允许32位应用程序在64位Windows操作系统上运行的技术。该函数存在后,Windows操作系统具备x64版本和x…

    C 2023年5月23日
    00
  • C程序 检查闰年

    C程序 检查闰年使用攻略 简介 本文将介绍如何使用C程序来检查一个年份是否为闰年。闰年是指能被4整除的年份,但是不能被100整除的年份,或者能够被400整除的年份。文章将包括程序示例和思路讲解。 示例代码 下面是一个简单的C程序,它使用函数来检查一个给定年份是否为闰年。该函数返回一个整数值,如果该年份是闰年则返回1,否则返回0。 #include <s…

    C 2023年5月9日
    00
  • C 存储类

    C 语言中的存储类指的是控制变量存储方式和生命周期的关键字。局部变量、全局变量和静态变量等都可以使用存储类关键字进行控制,以达到更加灵活的变量存储方式和更加符合实际需要的生命周期等效果。通常使用的存储类关键字有 auto、register、static、extern 四种。 下面我们来详细介绍一下“C 存储类”的使用攻略。 auto 存储类 auto 存储类…

    C 2023年5月10日
    00
合作推广
合作推广
分享本页
返回顶部