CI 框架 I卷

ci目录结构                                                                                   php

|-----system                框架程序目录  
    |-----core              框架的核心程序  
        |-----CodeIgniter.php   引导性文件  
        |-----Common.php    加载基类库的公共函数  
        |-----Controller.php    基控制器类文件:CI_Controller  
        |-----Model.php     基模型类文件:CI_Model  
        |-----Config.php    配置类文件:CI_Config  
        |-----Input.php     输入类文件:CI_Input  
        |-----Output.php    输出类文件:CI_Output  
        |-----URL.php       URL类文件:CI_URl  
        |-----Router.php    路由类文件:CI_Router  
        |-----Loader.php    加载类文件:CI_Loader  
    |-----helpers           辅助函数  
        |-----url_helper.php    url相关的辅助函数,如:建立url的辅助函数  
        |-----captcha_helper.php建立图形验证码的辅助函数  
    |-----libraries         通用类库  
        |-----Pagination.php    通用分页类库  
        |-----Upload.php    通用文件上传类库  
        |-----Image_lib.php 通用图像处理类库  
        |-----Session.php   通用session类库  
    |-----language          语言包  
    |-----database          数据库操做相关的程序  
        |-----DB_active_rec.php 快捷操做类文件(ActiveRecord)  
    |-----fonts             字库  
      
|-----application           项目目录  
    |-----core              项目的核心程序  
    |-----helpers           项目的辅助函数  
    |-----libraries         通用类库  
    |-----language          语言包  
    |-----config            项目相关的配置  
        |-----config.php    项目相关的配置文件     
        |-----database.php  数据库相关的配置文件  
        |-----autoload.php  设置自动加载类库的配置文件  
        |-----constants.php 常量配置文件  
        |-----routes.php    路由配置文件  
    |-----controllers       控制器目录  
        |-----welcome.php   控制器文件,继承CI_Controller  
    |-----models            模型目录  
        |-----welcome_model.php 模型文件,继承CI_Model  
    |-----views             视图目录  
        |-----welcome.php   视图模板文件,默认后缀名为.php  
    |-----cache             存放数据或模板的缓存文件  
    |-----errors            错误提示模板  
    |-----hooks             钩子,在不修改系统核心文件的基础上扩展系统功能  
    |-----third_party       第三方库  
    |-----logs              日志  
  
|-----index.php             入口文件

访问形式                                                                                     html

在\application\controllers\welcome.php中添加函数:sql

public function hello()    
{    
    echo "test";   
}

image

CI的访问url使用的是pathinfo,入口文件.php/控制器/动做数据库

本身新建控制器,hello.php:数组

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

    class Hello extends CI_Controller 
    {
        public function sayHello($name)
        {
            echo $name,",Hello World";
        }
    }
?>

image

注意:缓存

  • 方法名如下划线开头的是不能访问成功的,只能间接访问。
  • 只能访问public修饰的方法。
  • 尽可能不要与类名相同的方法,会看成构造函数。

加载视图                                                                                    session

application\views\view_test.php或者application\views\view\test.php(这中作法主要是方便同一类型的视图能够放在同一个文件夹下方便管理)app

<html>
<head>
</head>
<body>
test_ci_hello_world
</body>
</html>

控制器:框架

public function addView()
{
    $this->load->view("view_test");
}

或者:函数

public function addView2()
{
    $this->load->view("view/test");
}

效果:

image

image

分配变量                                                                                     

把数据从控制器中传到视图中,控制器:

public function addView()
        {
            $this->load->vars("title","value");
            $list = array(
            array('id'=>1,'name'=>'jack','email'=>'123@123.com'),
            array('id'=>2,'name'=>'jack2','email'=>'1233@123.com'),
            array('id'=>3,'name'=>'jack3','email'=>'12333@123.com')
            );
            $data['new_title']="标题";
            $data['list']=$list;
            $this->load->vars($data);
            
            $this->load->view("view_test");
        }

视图:

<html>
    <head>
    </head>
    <body>
        <h1><?php echo $title;?></h1>
        <h1><?php echo $new_title;?></h1>
        test_ci_hello_world
        <table>
            <?php foreach($list as $item):?>
            <tr>
                <td><?=$item['id']?></td>    
                <td><?=$item['name']?></td>
                <td><?=$item['email']?></td>                
            </tr>
            <?php endforeach;?>
        </table>
    </body>
</html>

效果:

image

load网站进去,控制器:

public function addView()
        {
            $this->load->vars("title","value");
            $list = array(
            array('id'=>1,'name'=>'jack','email'=>'123@123.com'),
            array('id'=>2,'name'=>'jack2','email'=>'1233@123.com'),
            array('id'=>3,'name'=>'jack3','email'=>'12333@123.com')
            );
            $data['new_title']="标题";
            $data['list']=$list;
            $this->load->vars($data);
            
            $this->load->view("view_test");
            $this->load->view("footer");
        }

视图view_test:

<html>
    <head>
    </head>
    <body>
        <h1><?php echo $title;?></h1>
        <h1><?php echo $new_title;?></h1>
        test_ci_hello_world
        <table>
            <?php foreach($list as $item):?>
            <tr>
                <td><?=$item['id']?></td>    
                <td><?=$item['name']?></td>
                <td><?=$item['email']?></td>                
            </tr>
            <?php endforeach;?>
        </table>

视图footer:

CI_hello_world!!!
</body>
</html>

显示效果:

image

uri参数获取                                                                                

控制器:

public function getUri($id,$name,$year)
        {
            echo "id--->".$id."---name--->".$name."---year--->".$year."<br />";
            echo "segment(1)--->".$this->uri->segment(1)."<br />";
            echo "segment(2)--->".$this->uri->segment(2)."<br />";
            echo "segment(3)--->".$this->uri->segment(3)."<br />";
            echo "segment(4)--->".$this->uri->segment(4)."<br />";
            echo "segment(5)--->".$this->uri->segment(5)."<br />";
        }

效果:

image

加载数据库                                                                                 

这个操做在MVC中是放到model中作的。

在\application\config\database.php中配置数据库参数,注意dbprefixswap_pre这两个参数。在php中写的是前缀,会默认看成swap_pre,而后放到数据库中的时候会转成dbprefix,可是最好两个都弄成同样的。

还有$active_group,默认是default,若是要链接两个数据库,把default另外取名,而后在函数中写明参数就OK。

必须继承数据核心类CI_Model,同时重载父类中的构造方法。

class Model_name extends CI_Model
{
    function __construct()
    {
        parent::__construct();
    }
}

在每次使用数据库的时候,都须要加载一次数据库:

$this->load->database();

为了方便,能够将数据库的加载设置成自动加载,在\application\config\autoload.php中。

$autoload['libraries'] = array('database');

对于数据库访问对象,装载到超级对象的属性中 $this->db

$res = $this->db->query($sql);//返回对象
$res->result();//返回数组,数组中是一个一个的对象
$res->result_array();//返回二维数组,里面是关联数组
$res->row();//返回第一条数据,直接是一个对象

AR操做数据库                                                                              

在database.php文件中,将$active_recoed的值改成TRUE,这样就可使用AR了。

//查询
public function index()
{
    $res = $this->db->get('表名');//这里自动调用前缀
    foreach($res->result() as $item)
    {
        echo $item->name."<br />";
    }
}
//插入
public function index()
{
    $data=array(
        'name'=>'lisi',
        'password'=>md5('lisi')
    );
    $bool = $this->db->insert("表名",$data);
    var_dump($bool);
}
//更新
public function index()
{
    $data=array(
        'name'=>'wangwu',
        'password'=>md5('wangwu')
    );

    $bool = $this->db->update('表名',$data,array('id'=>3));
    var_dump($bool);
}
//删除
$bool = $this->db->delete('表名',array('id'=>2));
var_dump($bool);
做者: 我爱物联网 
出处: http://yydcdut.cnblogs.com/ 
本文版权归做者和博客园共有,欢迎转载,但未经做者赞成必须保留此段声明,且在文章页面明显位置给出原文链接,不然保留追究法律责任的权利。
 
原文地址:
http://www.cnblogs.com/phpfrankie/articles/4465667.html