首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

CodeIgniter 入門教程(一):MVC 架構與簡易發布系統實作

     編輯:PHP 相關知識

CodeIgniter 入門教程(一):MVC 架構與簡易發布系統實作

CodeIgniter (CI) 是輕量級 PHP 框架,採用 MVC 架構,學習曲線平緩。本教程從零開始構建一個「信息發布」小系統,涵蓋路由、控制器、模型、視圖、Active Record、表單驗證等核心概念。

一、目錄結構與 MVC 對應

application/
├── config/          # 配置文件(database.php, routes.php)
├── controllers/     # 控制器:邏輯判斷、協調 M/V
├── models/          # 模型:資料庫操作
├── views/           # 視圖:HTML 模板
└── helpers/         # 輔助函數
  • 控制器:接收請求 → 調用模型 → 載入視圖 → 返回響應
  • 模型:封裝 SQL,提供資料存取介面
  • 視圖:純展示邏輯,通過 $this->load->view('file', $data) 接收變量

二、初始配置

1. 資料庫配置 application/config/database.php

$db['default'] = [
    'hostname' => 'localhost',
    'username' => 'root',
    'password' => '',
    'database' => 'test',
    'dbdriver' => 'mysqli',
    'dbprefix' => 'ts_',
    'charset' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
];

2. 默認路由 application/config/routes.php

$route['default_controller'] = 'test/home';  // 訪問 / 直接進入 Test::home()

URL 格式:https://domain/index.php/控制器/方法(可通過 .htaccess 隱藏 index.php)。

三、步驟 1:直接輸出視圖

load->view('home');
    }
}

// application/views/home.php
defined('BASEPATH') OR exit('No direct script access allowed');
?>
<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>Home</title></head>
<body>
    <h1>這是我們的主頁</h1>
</body></html>

四、步驟 2:插入資料(表單提交 → 驗證 → 入庫)

1. 建表 ts_news

CREATE TABLE ts_news (
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(200) NOT NULL,
    content TEXT NOT NULL,
    update_time INT NOT NULL,
    create_time INT NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

2. 模型 application/models/News_model.php

load->database();
    }
    public function insert($data, $table = 'news') {
        $this->db->insert($table, $data);
        return $this->db->affected_rows() > 0 ? $this->db->insert_id() : FALSE;
    }
}

3. 控制器新增 add_news()

public function __construct() {
    parent::__construct();
    $this->load->helper('url');      // site_url()
    $this->load->model('news_model');
}

public function add_news() {
    $title = $this->input->get('title', TRUE);   // XSS 過濾
    $content = $this->input->get('content');

    // 簡單驗證
    if (strlen($title) < 20 || strlen($content) < 20) {
        echo '標題或正文內容過短'; return;
    }

    $data = [
        'id' => '', 'title' => $title, 'content' => $content,
        'update_time' => time(), 'create_time' => time()
    ];

    if ($this->news_model->insert($data, 'news')) {
        redirect('test/home');  // PRG 模式避免重複提交
    } else {
        echo '提交失敗';
    }
}

4. 視圖加入表單

<form action="<?= site_url('test/add_news') ?>" method="get">
    <label>標題</label><input type="text" name="title"><br>
    <label>正文</label><textarea name="content" cols="30" rows="10"></textarea><br>
    <input type="submit" value="提交">
</form>

五、步驟 3:查詢並顯示列表

1. 模型新增 get_all()

public function get_all($table) {
    return $this->db->get($table)->result_array();
}

2. 控制器 home() 傳遞數據

public function home() {
    $data['news'] = $this->news_model->get_all('news');
    $this->load->view('home', $data);
}

3. 視圖遍歷輸出

<?php foreach ($news as $item): ?>
    <div>
        <h3><?= $item['title'] ?></h3>
        <span>發布時間:<?= date('Y-m-d H:i:s', $item['create_time']) ?></span>
        <p><?= $item['content'] ?></p>
    </div>
<?php endforeach; ?>

六、核心知識點回顧

概念CI 實作關鍵方法
載入視圖$this->load->view()view('file', $data, true/false)
獲取輸入Input 類$this->input->get/post('key', xss_clean)
生成 URLURL Helpersite_url('c/m'), base_url('path')
重導向URL Helperredirect('c/m')
資料庫操作Active Record$this->db->get/insert/update/delete
防 XSSInput 類 / 輸出轉義$this->input->get('key', TRUE)

七、下一步學習建議

  1. 表單驗證類 form_validation 替換手寫驗證
  2. 分頁類 pagination 處理大量列表
  3. Session 庫實現用戶登入狀態
  4. .htaccess 重寫規則隱藏 index.php
  5. Composer 整合第三方庫
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved