在开发的时候框架是十分重要的,目前有很多框架,WPF中比较出名的MVVM等,这些都是用来组织开发文件的,就是把一个应用分开来写。下面总结一下CI框架的用法。

CI框架是基于MVC的,分别是
1.Models:模型,用来摆放实体类,工具类,数据库访问类等,属于后台的数据支持与类型支持。
2.Controls:控制器,当做一个交警的作用,就是控制内部数据和外部界面的协调,所以这个是在M和V中间做调节作用了,竟然是调节作用,那么就需要掌握一些东西:怎么和M交流,怎么和V交流,还有用户是怎么和自己交流呢。这些都是比较核心,比较重要的东西,下面会总结。
3.Views:视图,这个就是界面了,反馈给用户操作的界面了,主要用html来写,这个大家懂了。
 
下面分几步来介绍和总结CI的使用:1.准备工作。2.文件介绍。3.M,C,V之间的通讯方式。
 
(一)下载,地址http://codeigniter.org.cn/下载完成就是应用程序的框架了,然后放在服务器www文件底下,看一下文件其他的就删除掉,没什么用处。
(二)
然后有两个文件夹,一个是Application,这个是应用程序文件放的地方,进去里面看一下:
这里可以看到MVC了,controllers,models,views分别放各自的文件,然后有一个config文件夹,用来装配置文件的。
返回去system文件夹里面就是存在开发这个框架的团队写的一些使用类,我们不用去修改,可以直接用。十分简单,,十分明了。
(三)这里就是重点了,在学会用一个框架的时候,框架之间的元素的通信方式必须要清楚,这样就能开搞。先说一下CI框架的思想,用户是通过访问一个controller中的方法来访问一个页面的,所以这个controller就起着十分重要的角色了,上面说过它是交通警察,负责监视内部数据变化和反馈界面,接受界面信息反馈内部数据等作用。下面说几个主要的通讯:
 
1.用户与controller的通讯,竟然用户是通过访问C中的方法来访问页面,那么用户与方法的通讯就通过参数来了,用户能在URL中直接写参数,按顺序,例如http://localhost/CI/index.php/hello/sayhello/Jarvin/Afternoon
这里就访问hello这个controller中的sayhello方法,看方法:
我看这样就明了了,第一个参数Jarvin第二个参数Afternoon.看结果
 
2.controller与View的通讯,虽然说能混编html来进行界面表述,但是竟然是用mvc那么就要分开,分到View里面,在Views文件夹里面写好html文件,这些文件能是完整的全页面html也能是部分html,例如说头部,身部,尾部等。写好以后就通过Controller来引用Views中的view来展示东西了。,竟然能在Controller中引用界面文件,那么怎么调用,这个是重要的:
$this->load->view("text_view.php");在函数里面加上这句就是引用一个views中的文件了。如果想调用多个,例如要一次把头,身,尾调用进去,那么直接在下面添加多两条一样的,改个名称就OK,还要一个重要的是Controller怎么跟view通讯呢???答案是利用数组,然后在第一个引用后面传入数组.下面看例子:
function show()
    {
        $name="Jarvin";
        $count=1;
        
        $data= array('Name'=>$name,'num'=>$count);
        
        $this->load->view("text_view.php",$data);//调用一个视图
    }
这样传过去,然后那边怎么接呢,直接使用就行了,方便啊:
 
3.Controller与model的通讯.
用来提交给view的数据很多时候不是写死的,那么动态数据就要用到数据库,那么久要用到Model了。,下面总结一下制作一个Model类进行对数据库进行增删改除。
其实啊,Controller调用Model类中的函数,然后传入参数进行通信,形式与C和V通讯差不多。
 
首先是新建一个模型类,新建一个模型类的模型是:
class ClassName extends CI_Model//注意要继承CI_Model类
{
    function __construct()
    {
        parent::__construct();//构造函数里面要调用父类的构造方法
        $this->load->database();//加载数据库,数据库名称在Config文件里面配置。,还有其他信息,例如密码等
    }
//下面写函数。
}
 
下面给出测试model类:
<?php
class Test_m extends CI_Model
{
    function __construct()
    {
        parent::__construct();
        $this->load->database();
    }
    
    function user_insert($arr)
    {
        $this->db->insert("person",$arr);
    }
    
    function user_update($name,$arr)
    {
        $this->db->where("Name",$name);
        $this->db->update("person",$arr);
    }
    function user_delete($name)
    {
        $this->db->where("Name",$name);
        $this->db->delete("person");
    }
    function user_select($name)
    {
        $this->db->where("Name",$name);
        $this->db->select("*");
        $query=  $this->db->get("person");
        return $query->result();
    }
}
?>
 
然后在controllers里面新建一个controller,来使用这个模型类的功能:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 
class User extends CI_Controller 
{//继承是必须的!!
    function insert()
    {
        $this->load->model('Test_m');
        $arr=array('Name'=>'fff','Age'=>21);
        $this->Test_m->user_insert($arr);
    }
    function update()
    {
        $this->load->model('Test_m');
        $arr=array('Name'=>'gg','Age'=>12);
        $this->Test_m->user_update('J',$arr);
    }
    function delete()
    {
        $this->load->model('Test_m');
        $this->Test_m->user_delete("Ken");
    }
    function  select()
    {
        $this->load->model('Test_m');
        var_dump($this->Test_m->user_select("ggg"));
    }
 }
?>
OK了,研究下就好。十分简单

PHP开发框架--CodeIgniter(CI)使用总结的更多相关文章

  1. CodeIgniter(CI)框架中的验证码

    在CodeIgniter框架中,CI本身自带了验证码,但是查看文档的时候,发现: 需要新建一个表,用来存储验证码信息.因为习惯了session存储验证码信息,所以我把我认为比较好看的验证码应用在了CI ...

  2. PHP CodeIgniter(CI)去掉 index.php

    去掉CodeIgniter(CI)默认url中的index.php的步骤: 1.打开apache的配置文件,conf/httpd.conf : LoadModule rewrite_module mo ...

  3. PHP开发框架CodeIgniter

    CodeIgniter 是一套给 PHP 网站开发者使用的应用程序开发框架和工具包. 通过下面四步来安装 CodeIgniter: 解压缩安装包: 将 CodeIgniter 文件夹及里面的文件上传到 ...

  4. Codeigniter CI 框架的一些优化思考

    前段时间使用CI做了两个小项目,对CI的流程和设计理念也有了一些新的认识.CI架构的一些基本优化这里就不做介绍了,如搬离system 文件夹等. 最近有一个稍微大一点的系统,也准备拿CI来做.设计时遇 ...

  5. 纯PHP Codeigniter(CI) ThinkPHP效率测试

    最近一直想做一个技术类的新闻站点,想做的执行效率高些,想用PHP做,一直纠结于用纯PHP做还是用CI或者THINKPHP.用纯PHP效率高,缺点 n多,比如安全方面.构架方面等等等等:用CI.thin ...

  6. CodeIgniter(CI 3.0)分页类实践记录

    最近在学习B/S,选择了PHP CI框架作为切入点. 在尝试制作个人CMS的时候遇到了需要分页的情况,网上好像搜不到3.0版本以上的例子,下面附上本地实验的代码,供参考. 数据库情况如下: 首先看Co ...

  7. CodeIgniter (CI)框架中的数据库查询汇总

    引言: 前两天业务涉及到一个拉取答题排行榜的需求,数据库里数据是这样的: 同一个人可能提交过多次成绩,所以同一个人可能会有多次记录: 同一个人提交的多次成绩中可能有至少两次成绩是一样的. 于是,查询的 ...

  8. php codeigniter (CI) oracle 数据库配置-宋正河整理

    database.php 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 $active_group = 'default'; $active_record ...

  9. **汇总CodeIgniter(CI)的数据库操作函数

    //查询: $query = $this->db_query("SELECT * FROM table"); ================================ ...

随机推荐

  1. Magento路径函数getBaseUrl使用方法

    当我们在设计开发Magento主题模板时候,有个函数一定要知道,那就是getBaseUrl函数,用getBaseUrl函数我们可以在.phtml里调用JS.image.File.   1,getBas ...

  2. matlab产生正态分布样本

    mvnrnd - Multivariate normal random numbers This MATLAB function returns an n-by-d matrix R of rando ...

  3. LeetCode Generate Parentheses 构造括号串(DFS简单题)

    题意: 产生n对合法括号的所有组合,用vector<string>返回. 思路: 递归和迭代都可以产生.复杂度都可以为O(2n*合法的括号组合数),即每次产生出的括号序列都保证是合法的. ...

  4. Azure 云助手正式发布

    Azure云服务在中国市场风生水起,越来越多的用户选择Azure作为平台将业务转向云端.随着移动互联网在中国的蓬勃发展,手机应用的体验深入人们的生活及工作.用户管控云服务也不应该只局限于电脑前,而是可 ...

  5. 文件IO操作

    前言 本文介绍使用java进行简单的文件IO操作. 操作步骤 - 读文件 1. 定义一个Scanner对象 2. 调用该对象的input函数族进行文件读取 (参见下面代码) 3. 关闭输入流 说明:其 ...

  6. C专家编程学习 1

    1.C语言的基本数据类型直接与底层硬件相对应. 2#define 是可能出现问题 1 2 3 4 5 #define a(y) a_ex(y) a(x)被扩展为 a_ex(x)   #define a ...

  7. 工作中遇到的问题--JPA 一对多查询

    /**     *  order by gs.updateDate desc          *  SELECT gs FROM GoodStatus gs WHERE gs IN(     * @ ...

  8. linux下遍历目录(转-在于思考)

    遍历目录的主要思想 由于目录就是一颗树,所以遍历目录就转换为遍历一棵树.谈到树的遍历就再熟悉不过了,有树的前序.层次和后序遍历,我使用的是前序遍历,后序遍历和前序遍历本质上一样,而层次遍历要比前两个麻 ...

  9. appium简明教程(6)——启动appium及android模拟器

    一般情况下,我们都从命令行启动appium. windows下,dos命令窗口输入 appium 如果该命令报错,那么请重装appium npm install -g appium 如果安装出错,请自 ...

  10. jquery mouseout事件错误(bug)

    移到子元素上时(例如,处在div中的图像),触发移出事件 (mouseout事件的一个常见错误). 解决办法是使用hover事件 在使用hover事件前,我抓耳挠腮的以为是margin或padding ...