它山之石可以攻玉

键盘上的生活
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

PHP开发框架--CodeIgniter(CI)使用总结

Posted on 2016-08-11 15:51  陈达辉  阅读(4889)  评论(0编辑  收藏  举报
在开发的时候框架是十分重要的,目前有很多框架,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文件底下,看一下文件PHP开发框架--CodeIgniter(CI)使用总结其他的就删除掉,没什么用处。
(二)
然后有两个文件夹,一个是Application,这个是应用程序文件放的地方,进去里面看一下:
PHP开发框架--CodeIgniter(CI)使用总结这里可以看到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方法,看方法:
PHP开发框架--CodeIgniter(CI)使用总结
我看这样就明了了,第一个参数Jarvin第二个参数Afternoon.看结果PHP开发框架--CodeIgniter(CI)使用总结
 
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);//调用一个视图
    }
这样传过去,然后那边怎么接呢,直接使用就行了,方便啊:PHP开发框架--CodeIgniter(CI)使用总结
 
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了,研究下就好。十分简单