CodeIgniter框架学习要点
以下内容从兄弟连的CI教学视频中摘抄:
http://codeigniter.org.cn/tutorials/
-----------------------------------------------------------------------------------------------
Codeigniter框架
-----------------------------------------------------------------------------------------------
讲师:邹义良
微博:weibo.com/it266
-----------------------------------------------------------------------------------------------
主要内容
CI简介
深入MVC设计模式
CI中的控制器与视图
CI中的超级对象
数据库访问
AR模型
如何扩展CI的控制器
模型
url相关函数
设置路由
分页
文件上传
Session
验证码
表单验证
-----------------------------------------------------------------------------------------------
CI是什么?
CodeIgniter是一个轻量级但功能强大的PHP框架
基于MVC设计模式,提供了一套丰富的类库
简单易学,高效实用
官方网站
www.codeigniter.com
中文网站
http://codeigniter.org.cn
下载当前最新版本
CodeIgniter_2.1.4.zip
(截止2015.7.1最新版为3.0.0——笔者注)
有什么特点?
你想要一个小巧的框架
你需要出色的性能
你需要广泛兼容标准主机上的各种 PHP 版本和配置
CI 2.1.4 需要PHP5.1.6
你想要一个几乎只需 0 配置的框架
你想要一个不需使用任何命令符的框架
你想要一个不需坚守限制性编码规则的框架
你不希望被迫学习一门模板语言(虽然可以选择你喜欢的模板解析器)
你不喜欢复杂,热爱简单
你需要清晰,完整的文档
目录结构说明
license.txt 许可协议
user_guide 用户手册
syste 框架核心文件
application 应用目录
index.php 入口文件
-----------------------------------------------------------------------------------------------
MVC
1.入口文件
唯一一个让浏览器直接请求的脚本文件
2.控制器
协调模型和视图
3.模型
提供数据,保存数据
4.视图
只负责显示
表单...
5.动作action
是控制器中的方法,用于被浏览器请求
CI中的MVC
访问url使用的是pathinfo
入口文件.php/控制器/动作
application目录中:
controllers 控制器
models 模型
views 视图
默认控制器是welcome
默认动作是index
控制器
1.不需要加后缀
2.文件名全部小写 例如 user.php
3.所有的控制器,直接或间接继承自CI_Controller类
4.控制器中,对动作(方法)要求:
public
不能以_开头
视图
1.在控制器中如果加载视图
//直接写视图名字,不写扩展名,如果有子目录,则写上目录名
2.视图中,直接使用原生PHP代码
3.推荐使用
<?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()用于获取uri中的参数
传统的:入口文件.php/控制器/动作/参数1/值1/参数2/值2
入口文件.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_URI类的实例 system/core/input.php
CI_URI类提供的方法:
$this->input->post('username'); //等价于$_POST['username'];
$this->input->server('DOCUMENT_ROOT'); //等价于$_SERVER['DOCUMENT_ROOT'];
$this->input->server('REMOTE_ADDR');
在视图中,直接用$this来访问超级对象中的属性
数据库访问
修改配置文件
application/config/database.php
将数据库访问对象 装载到超级对象的属性中 $this->db
$this->load->query($sql);//返回对象
$res=$this->db->query($sql);//返回对象
$res->result();//返回数组,数组中是一个一个的对象
$res->result_array();//返回二维数组,里面是关联数组
$res->row()//返回第一条数据,直接是一个对象
参数绑定
$sql="select * from blog_user where name=?";
$this->db->query($sql,$name);//如果有多个问号时,需要传入一个索引数组
表前缀
$db['default']['dbprefix'] = 'new_';
$db['default']['swap_pre'] = 'swap_';
配置为一样,代码中,直接硬编码表前缀就行了,如果以后项目数据库表前缀发生变化,
只需要修改$db['default']['dbprefix'] = 'new_';代码中的swap_会自动替换为new_
db的自动加载
application\config\autoload.php
$autoload['libraries'] = array(database);
不需要:$this->load->database();
取自增id
$this->db->insert_id();
受影响行数
$this->db->affected_rows();
Active record
1.application/config/database.php
确保$active_record = TRUE;
2.application/config/autoload.php
$autoload['libraries'] = array(database);
3.在配置文件中,正确配置表前缀后,会自动添加
$res->$this->db->get('表名');//返回结果集对象
$res->result();
$bool=$this->db->insert('表名',关联数组);
$bool=$this->db->update('表名',关联数组,WHERE条件);
$bool=$this->db->delete('表名',WHERE条件);
//select uid,username from user where uid>=3 order by uid desc limit 2,3
$res=$this->db->select('uid,username')
->from('user')
->where('uid >=',1)
->limit(3,2)//跳过2条,取出3条数据
->order_by('uid desc')
->get();
//显示最进一条sql语句
echo $this->db->last_query();
//where
//$res=$this->db->where('username','marry')->get('user');
//$res=$this->db->where('username !=','marry')->get('user');
//$res=$this->db->where('username','marry')->get('user');
$res=$this->db->where(array('username'=>'hanyile','uid <'=>3))->get('user');
echo $this->db->last_query();
复杂的查询请用$this->db->query($sql,$data);//使用问号绑定查询
扩展CI控制器
application/core/MY_Controller.php
控制器就可以继承自MY_Controller
application/config/config.php
$config['subclass_prefix'] = 'MY_';
模型
在模型中,可以直接使用超级对象中的属性
CodeIgniter框架学习要点的更多相关文章
- CodeIgniter框架——知识要点汇总
NO1.学习要点: 一.CodeIgniter 框架的简介 二.CodeIgniter 框架的安装 三.CodeIgniter 框架的目录结构分析 四.CodeIgniter 框架是如何工作的? 五. ...
- CodeIgniter 框架---学习笔记
1.输出sql语句:echo $this->db->last_query();
- 学习CodeIgniter框架之旅(一)自定义模板目录
在常用的框架本身都已经做好了分层和目录结构,但这在很多时候不满足项目的需求甚至在某些情况下变得不合理,因此很多时候需要自定义目录结构,在此就看看如果在CodeIgniter框架中自定义模板目录: 在C ...
- 【C#】第3章学习要点(一)--整体把握
分类:C#.VS2015 创建日期:2016-06-18 使用教材:(十二五国家级规划教材)<C#程序设计及应用教程>(第3版) 一.使用别人已经设计好的类简化你的代码编写工作量 当让你去 ...
- CodeIgniter框架入门教程——第三课 URL及ajax
本文转载自:http://www.softeng.cn/?p=74 这节课讲一下CI框架的路由规则,以及如何在CI框架下实现ajax功能. 首先,先介绍CI框架的路由规则,因为CI框架是在PHP的基础 ...
- CI(CodeIgniter)框架入门教程——第二课 初始MVC
本文转载自:http://www.softeng.cn/?p=53 今天的主要内容是,使用CodeIgniter框架完整的MVC内容来做一个简单的计算器,通过这个计算器,让大家能够体会到我在第一节课中 ...
- ***PHP中error_reporting()用法详解(含codeigniter框架中屏蔽错误提示的解决方案)
php中我们对错误的处理会常用到error_reporting函数了,大家可以看到最多的是error_reporting(E_ALL ^ E_NOTICE)了,这个到底什么意思呢,下面我来来看看. e ...
- CodeIgniter框架入门教程——第一课 Hello World!
本文转载自:http://www.softeng.cn/?p=45 今天开始,我将在这里连载由我自己编写的<CodeIgniter框架入门教程>,首先,这篇教程的读着应该是有PHP基础的编 ...
- CodeIgniter框架中关于URL(index.php)的那些事
最近,在做自己的个人网站时,采用了轻量级的php框架CodeIgniter.乍一看上去,代码清晰简洁,MVC模型非常容易维护.开发时我采用的工具是Netbeans IDE 8.0,当然,本文的内容和开 ...
随机推荐
- django中多个字段的模糊查询
django中多个字段的模糊查询 使用Entity.objects.filter(name_contains='kris').filter(address='beijing') 这个方法是指名字包含k ...
- FocusBI: 使用Python爬虫为BI准备数据源(原创)
关注微信公众号:FocusBI 查看更多文章:加QQ群:808774277 获取学习资料和一起探讨问题. <商业智能教程>pdf下载地址 链接:https://pan.baidu.com/ ...
- React.js 小书 Lesson19 - 挂载阶段的组件生命周期(二)
作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson19 转载请注明出处,保留原文链接和作者信息. 这一节我们来讨论一下对于一个组件来说,cons ...
- Java入门系列-16-继承
这一篇文章教给新手学会使用继承,及理解继承的概念.掌握访问修饰符.掌握 final 关键字的用法. 继承 为什么要使用继承 首先我们先看一下这两个类: public class Teacher { p ...
- java获取request的头信息
1.获取全部头信息: //get request headers private Map<String, String> getHeadersInfo() { Map<String, ...
- CXF - JAX-WS入门
相关dependency,我使用的版本是2.7.11: <dependency> <groupId>org.apache.cxf</groupId> <art ...
- 互联网轻量级框架SSM-查缺补漏第九天
简言: 第九章 Spring Ioc的概念 IoC(Inversion of Control)控制反转:比如想喝橙汁,在没有饮品店的日子,最直观的做法是买果汁机.橙汁.这是你自己“主动”创造的过程,也 ...
- 20个实用的javascript技巧及实践(一)
在本篇文章中,我们将会向大家分享JavaScript开发中的小技巧.最佳实践和实用内容,不管你是前端开发者还是服务端开发者,都应该来看看这些编程的技巧总结,绝对会让你受益匪浅的. 文中所提供的代码片段 ...
- javascript运算符之==和===
1.== :判断两个数是否相等,在比较之前会自动转化类型再做比较.为确定两个运算数是否相等,这两个运算符都会进行类型转换. 执行类型转换的规则如下: 1.如果一个运算数是 Boolean 值,在检查相 ...
- CSS总结摘要
一 概述 1.什么是CSS? Cascading Style Sheet,层叠样式表,用于设定页面内容的显示样式. 2.为一个元素添加多个样式 一个元素可以同时定义多个类,不同类之间用空格隔开,如cl ...