CodeIgniter学习笔记(一)——CI简介与MVC设计模式

CodeIgniter的优势:

  1. 轻量级框架
  2. 出色的性能
  3. 广泛兼容标准主机上的各种PHP版本和配置
  4. 0配置
  5. 不需要使用命令行
  6. 不需坚守限制性编码规则

CodeIgniter最新版本的下载地址:http://www.codeigniter.org.cn/

下载压缩包后解压,包含如下内容:

  • application目录:编写程序的目录,其中包含了实现mvc模式的models、views和controllers目录
  • system目录:CodeIgniter框架代码,不能修改,否则以后升级时无法替换
  • user_guide目录:用户手册,英文版的
  • index.php文件:入口文件
  • license.txt文件:版权许可文件

复习一下MVC模式的实现,创建一个入口文件index.php

<?php
    header("Content-Type:text/html;charset=utf-8");

    // 获得控制器名称
    $c= $_GET['c'];
    
    // 包含控制器所在文件
    include './controllers/' . $c .'Controller.php';
    
    // 实例化控制器
    $className = $c . 'Controller';
    $controller = new $className();
    
    // 获得方法名
    $a = $_GET['a'];
    
    // 调用方法
    $controller->$a();
?>

再创建数据模型文件UserModel.php文件,放在models目录下

<?php
    class UserModel
    {
        public function getAllUsers()
        {
            $list = array(
                    array('id'=>1, 'name'=>'jack', 'email'=>'jack@gmail.com'),
                    array('id'=>2, 'name'=>'mary', 'email'=>'mary@gmail.com'),
                    array('id'=>3, 'name'=>'lili', 'email'=>'lili@gmail.com'),
                );
            return $list;
        }
    }
?>

再创建控制器文件UserController.php文件,放在controllers目录下

<?php
    class UserController
    {
        public function index()
        {
            // 调用模型方法,获取数据
            include './models/UserModel.php';
            $model = new UserModel();
            $list = $model->getAllUsers();
            
            // 包含视图文件
            include './views/User/index.php';
        }
    }
?>

最后创建视图文件index.php文件,放在views目录下,这里仅简单的显示数组

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    这是User控制器的index方法的视图
    <?php
        echo "<br />";
        var_dump($list);
    ?>
</body>
</html>

通过url传入控制器名称和方法名:http://localhost:8080/testCodeIgniter/mvc/index.php?c=user&a=index

显示效果如下:

8(MD`}E]HL@PP7H90TX@9$G

MVC总结:

  1. 入口文件是唯一一个让浏览器请求的脚本
  2. 控制器负责协调模型和视图
  3. 模型只负责处理数据
  4. 视图只负责显示数据
posted @ 2015-07-07 22:56  iamsupercola  阅读(1099)  评论(0编辑  收藏  举报