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

CodeIgniter 快速開發指南:MVC 分層實戰與 Model/Controller/View 協作範例

     編輯:PHP 相關知識

CodeIgniter 快速開發指南:MVC 分層實戰與 Model/Controller/View 協作範例

CI 核心優勢在於**徹底的 MVC 分層**:Model 專司資料邏輯,Controller 專司流程控制,View 專司呈現。三層互不混雜,極大提升可維護性。

Model 層:User_model(完整 CRUD)

class User_model extends CI_Model {

public function __construct() { parent::__construct(); }

// 查詢:支援條件陣列,便於 Controller 組裝複雜查詢

public function userInfo($where = array()) {

if($where && is_array($where)) {

$res = $this->db->select('id, username, age')->where($where)->get('users');

} else {

$res = $this->db->select('id, username, age')->get('users');

}

return $res->result_array(); // 二維陣列

}

// 新增

public function userAdd($data) {

if($data && is_array($data)) {

return $this->db->insert('users', $data);

}

return false;

}

// 刪除

public function userDel($id) {

if($id) {

return $this->db->where('id', $id)->delete('users');

}

return false;

}

// 修改

public function userEdit($where, $data) {

if($where && is_array($where)) {

return $this->db->where($where)->update('users', $data);

}

return false;

}

// 聯表查詢範例

// $this->db->select('p.*, u.username')->from('payment p')->join('users u', 'p.uid = u.id')->order_by('p.id', 'desc')->get();

}

關鍵規範

  • 類名首字母大寫 User_model,檔名小寫 user_model.php
  • 繼承 CI_Model
  • Controller 載入:$this->load->model('User_model', 'user'); 別名 user
  • 支援子目錄:$this->load->model('blog/User_model');
  • 自動載入配置:application/config/autoload.php
  • 需資料庫連線時:$this->load->model('User_model', '', TRUE); 第三參數 TRUE

Controller 層:Users(邏輯控制)

class Users extends CI_Controller {

public function __construct() {

parent::__construct();

$this->load->model('User_model', 'user');

}

// 列表

public function index() {

$data['user_list'] = $this->user->userInfo();

$this->load->view('user_list', $data);

}

// 新增

public function user_add() {

$data = array(

'username' => $this->input->post('name'),

'age' => intval($this->input->post('age'))

);

$bool = $this->user->userAdd($data);

$this->show_tips($bool ? '操作成功!' : '操作失敗!');

}

// 修改

public function user_edit() {

$id = $this->input->post('id');

$data = array(

'username' => $this->input->post('name'),

'age' => intval($this->input->post('age'))

);

if($id) {

$bool = $this->user->userEdit(array('id'=>$id), $data);

$this->show_tips($bool ? '操作成功!' : '操作失敗!');

} else {

$this->show_tips('非法操作!');

}

}

// 刪除

public function user_del() {

$id = $this->input->post('id');

$bool = $this->user->userDel($id);

$this->show_tips($bool ? '操作成功!' : '操作失敗!');

}

}

Controller 規範

  • 檔名小寫 users.php,類名首字母大寫 Users
  • 繼承 CI_Controller
  • 權限控制集中於 application/core/MY_Controller.php,定義前台/後台基類
  • 預設控制器配置:application/config/routes.php

View 層:user_list(純呈現)

<?php $this->load->view('header'); ?>

<div>

<table>

<?php if($user_list): ?>

<?php foreach($user_list as $v): ?>

<tr><td><?=$v['username'];?></td></tr>

<?php endforeach; ?>

<?php endif; ?>

</table>

</div>

<?php $this->load->view('footer'); ?>

View 特性

  • 直接使用 Controller $data 變數
  • 可用所有 CI 系統函數/Helper
  • 啟用短標籤支援後,即使 PHP 未開啟 short_open_tag,CI 也會自動解析 <?= ?>

註:代碼為示意,可能存在手誤,請參考官方手冊修正後使用。更多實用用法請查閱 CI 使用手冊。

原文連結:https://www.cnblogs.com/farwish/p/3991419.html

作者:黑眼詩人 <www.chenwei.ws>

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved