CI笔记

CI是什么?

codeIgniter 是一个轻量级但功能强大的PHP框架,基于MVC设计模式,提供的一套丰富的类库。

简单易学,高效实用。

官方网站

www.codeigniter.com

中文网站

http://codeigniter.org.cn

最新版本

CodeIgniter-3.0.6.zip

有什么特点?

你想要一个小巧的框架

你需要出色的性能

你需要广泛兼容标准主机上的各种PHP版本和配置(PHP 版本 5.1.6

你想要一个几乎只需 0 配置的框架

你想要一个不需要使用命令行的框架

你想要一个不需要坚守限制性编码规则的框架

你不希望被迫学习一门模板语言

你不喜欢复杂、热爱简单

你需要清晰、完整的文档

 

目录结构说明

license.txt

许可协议

user_guide

用户手册

system

框架核心文件

application

应用目录

index.php

入口文件

 

 

MVC

1.  入口文件

唯一一个让浏览器直接请求的脚本文件

1. 控制 contorller

负责调度模型和视图

1. 模型 model

和数据库打交道,提供数据,保存数据

1. 视图 view

只负责显示

1. 动作 action

是控制器中方法,用于被浏览器请求

 

 

CI中的MVC

访问url使用的是pathinfo的模式

入口文件.php/控制器/方法/参数值

Application 目录中:

Controllers

控制器

Models

模型

Views

视图

默认控制器:welcome

默认方法:index

 

控制器

1. 不需要加后缀

2. 文件名全部小写,例如:user.php

3. 所有的控制器,直接或间接继承自CI_Controller

4. 控制器中,对方法要求:

1. Public

2. 不能以_开发

 

视图

1. 在控制器中如果加载视图

1. 直接写视图名字,不写扩展名,如果有子目录,则写上目录名,

$this->load->view(视图);  // 可以多次调用

1. 视图中,直接使用原生PHP代码

2.  推荐使用

<?php foreach($list as $item):?>

<?=$item['name']?>

<?php endforeach; ?>

 

超级对象

即:当前的控制器对象,提供了很多属性:

$this->load

装载器类的实例, system/core/loader.php

提供的方法有:

view()

装载视图

vars()

分配变量到视图

database()

装载数据库操作对象

model()

装载数据库操作对象

helper()

 

 

$this->uri

CI_URI类的实例,  system/core/URI.php

CI_URI类提供的方法:

segment(n)

获取URL中第n个参数值

 

传统的:入口文件.php/控制器/方法/参数1/1/参数2/2

CI中的:入口文件.php/控制器/方法/1/2

echo $this->segment(3);

值1

echo $this->segment(4);

值2

 

例子://index.php/控制器/index/6

Public function index($p=0)

{

echo $p;// 输出6

}

 

$this->input

输入类

CI_Input类的实例,  system/core/Input.php

CI_Input类提供的方法:

$this->input->post('username');

 

$this->input->server('DOCMENT_ROOT');

$this->input->cookie('token');

 

注:在视图中,也可以用$this来访问超级对象中的属性

 

数据库访问

修改配置文件:

Application/config/database.php

 

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

$this->load->database();

 

$res = $this->db->query($sql);

返回对象

$res->result();

返回数组(数组中是一个个的对象)

$res->result_array();

返回二维数组(里面是关联数组)

$res->row()

返回第一条数据(是一个对象)

 

表前缀

$db['default']['dbprefix'] = 'blog_';

$db['default']['swap_pre'] = 'blog_';

 

解:swap_pre配置会把硬编码中表前缀,替换为dbprefix

 

DB的自动加载

Application/config/autoload.php

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

注:配置表前缀后,会自动加载

 

判断条件:

$this->db->insert_id();

自增ID

$this->db->affected_row();

受影响行数

 

 

Active Record

开启AR

1. Application/config/database.php

$active_record = TRUE;

旧版本

$query_builder = TRUE;

新版本(3.0.1)

 

1. 常用操作

查询

 

$res = $this->db->get('表名');

返回结果集对象

$res->result();

 

新增

 

$this->db->insert('表名',关联数组)

返回布尔

修改

 

$this->db->update('表名',关联数据,条件);

返回波尔

删除

 

$this->db->delete('表名',条件);

返回布尔

 

1. 连贯操作

// SELECT uid,user FROM user WHERE uid > 2 LIMIT 2,3 ORDER BY uid ASC

构造一个如上SQL的连贯写法:

$res = $this->db->select('id,user')

->from('user')

->where('id >',2)

->limit(3,2)

->order_by('id ASC')

->get();

 

// 获取最近的执行的SQL语句

echo $this->db->last_query();

 

// where 的用法

条件

结果

->wher('name','张三')->get()

WHERE `name`='张三'

->where('name !=','张三')->get()

WHERE `name`!='张三'

->where(array('name'=>'lisi'))->get()

WHERE `name`='lisi'

->where(array('name'=>'lisi','id >'=>2))->get()

WHERE `name`='lisi' AND id>2

 

复杂的查询,请用$this->db->query($sql,$data);  // 使用问号绑定参数

 

扩展CI控制器

Application/core/MY_Controller.php

控制器就要以继承自MY_Controller

 

Application/config/config.php

$config['subclass_prefix'] = 'MY_';

 

模型

继承自CI_Model

在模型中,可以直接使用超级对象中的属性

文件名,全小写

类名,首字母大写

建议使用_model作为后缀,防止和控制类名冲突

Model文件:user_model.php

CI 验证码报错

mcrypt_create_iv()  MCRYPT_DEV_URANDOM  ------> MCRYPT_RAND

 

    509学一个新框架的步骤

1 入口文件,目录结构,配置

2 mvc 路由

3 curd

4 类库 函数库

5 封装类库 封装函数库


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值