一、基本结构

CodeIgniter3.0.0解压后有8个文件,分别是:

  • application:项目文件
  • system:系统(框架)文件,为方便升级,不建议修改
  • user_guid:用户手册,不需要加入项目
  • composer.json:composer配置文件,不需要加入项目
  • contributing.md:如何参与项目贡献代码,不需要加入项目
  • index.php:项目入口文件
  • license.txt:许可文件,不需要加入项目
  • readme.rst:说明文件,不需要加入项目

二、控制器Controller

控制器在application文件夹中的controllers文件夹中,默认控制器为welcome,有4小点需要注意:

1、控制器类名不需要加后缀

2、控制器文件名建议小写

3、控制器要直接或间接继承自CI_Controller类

4、可访问的action方法名不能以下划线开头,且访问权限要是public的

三、视图View

视图在application文件夹中的views文件夹中,几个tips:

1、在控制器中用如下代码加载views中的视图:

//加载views文件夹中的user_index.php视图文件
$this -> load -> view('user_index');//加载views/user文件夹中的index.php视图文件
$this -> load -> view('user/index');

2、在视图中,可以直接使用原生的php代码

3、在控制器中可以通过以下方式向视图中输出变量:

<?phpclass User extends CI_Controller {public function index() {$data = array('username' => 'jim','books' => array('a', 'b', 'c', 'd'));$head = array('title' => 'TITLE','subtitle' => 'SUB TITLE');$this -> load -> vars('data', $data);//公共部分$this -> load -> view('header');$this -> load -> view('user/index', $head);}}
?>

在视图中用如下方式获取变量:

<!DOCTYPE html>
<html>
<head><title>User</title>
</head>
<body><h1>User</h1><?php var_dump($data); ?><?php var_dump($title); ?>
</body>
</html>

四、CI的超级对象

CI中的超级对象即为当前的控制器对象。在视图中也可以直接使用$this访问超级对象。

超级对象提供了很多属性:

1、$this -> load ,装载器,主要提供了如下方法:

  • view:装载视图
  • vars:分配变量到视图
  • database:装载数据库操作对象
  • model:装载模型
  • helper:加载帮助文件

2、$this -> uri,解析URL相关内容,主要提供如下方法:

  segment:按索引(控制器为1)获取分段url值(类pathinfo没有key的模式:入口.php/控制器/动作/参数1/参数2。。。),示例如下

  • <?phpclass User extends CI_Controller {///index.php/user/index/id/abc/name/godpublic function index($param1, $param2) {$param3 = $this -> uri -> segment(5);var_dump(array('param1' => $param1,'param2' => $param2,'param3' => $param3));/*array (size=3)'param1' => string 'id' (length=2)'param2' => string 'abc' (length=3)'param3' => string 'name' (length=4)*/$this -> load -> view('user/index');}}
    ?>

3、$this -> input,主要用于取post和server数据,使用方法如下:

<?phpclass User extends CI_Controller {public function index() {$username = $this -> input -> post('username');$ip = $this -> input -> server('REMOTE_ADDR');echo $ip;//127.0.0.1$this -> load -> view('user/index');}}
?>

五、数据库操作

数据配置文件在 application/config/database.php 中。

1、查询示例

<?phpclass User extends CI_Controller {public function index() {$this -> load -> view('user/index');}public function showusers() {$this -> load -> database();$sql = 'select * from ci_test';$res = $this -> db -> query($sql);$users = $res -> result();var_dump($users);/*array (size=1)0 =>object(stdClass)[18]public 'id' => string '1' (length=1)public 'name' => string 'jim' (length=5)public 'title' => string 'ci learn' (length=8)*/$users2 = $res -> result_array();/*array (size=1)0 =>array (size=3)'id' => string '1' (length=1)'name' => string 'atwal' (length=5)'title' => string 'ci learn' (length=8)*/var_dump($users2);$firstUser = $res -> row();var_dump($firstUser);/*object(stdClass)[18]public 'id' => string '1' (length=1)public 'name' => string 'atwal' (length=5)public 'title' => string 'ci learn' (length=8)*/$this -> load -> view('user/show');}}
?>

要先调用 $this -> load -> database()进行装载数据库,然后才能使用 $this -> db 对象。

2、插入示例

public function add() {$this -> load -> database();$sql = "insert into swap_test(name,title) values ('jim', 'jim learn ci')";$bool = $this -> db -> query($sql);if ($bool) {//受影响行数echo $this -> db -> affected_rows();//自增idecho $this -> db -> insert_id();}
}

3、参数绑定示例

为了安全,阻止SQL注入,建议用参数绑定的形式操作数据库。

public function addsafe() {//配置自动加载db//application\config\autoload.php//$autoload['libraries'] = array('database');//$this -> load -> database();$data[0] = 'lili';$data[1] = 'lili';$sql = "insert into swap_test(name,title) values (?,?)";$bool = $this -> db -> query($sql, $data);if ($bool) {//受影响行数echo $this -> db -> affected_rows();//自增idecho $this -> db -> insert_id();}
}

4、表前缀

为了应对数据库表前缀变化,CI数据库配置(application\config\database.php)中有下面两项:

$db['default'] = array('dbprefix' => 'ci_','swap_pre' => 'swap_',
);

swap_pre的作用是,在代码中用swap_pre来替换dbprefix,可以达到换数据库表前缀不改代码的目地(即在代码中表前缀用swap_pre值就好)。

5、自动加载db对象

在每次数据库操作前都要加载database才可以使用db对象,显得比较麻烦,可以用CI中的自动加载能力简化这一步:

//配置自动加载db
//application\config\autoload.php
//$autoload['libraries'] = array('database');

配置完后,就可以直接使用$this -> db 对象了。

转载于:https://www.cnblogs.com/lurenjiashuo/p/ci-note-basic-1.html

CodeIgniter学习笔记一:基本结构、控制器、视图、超级对象、数据库相关推荐

  1. CodeIgniter学习笔记 Item10--CI总结精华

    Yii CI ThinkPHP ZF 主要内容 CI简介 深入MVC设计模式 CI中控制器与视图 CI的超级对象 数据库访问 AR模型 如何扩展CI的控制器(登录验证) 模型 url相关函数 设置路由 ...

  2. IOS学习笔记(九)之UIAlertView(警告视图)和UIActionSheet(操作表视图)基本概念和使用方法...

    IOS学习笔记(九)之UIAlertView(警告视图)和UIActionSheet(操作表视图)基本概念和使用方法 Author:hmjiangqq Email:jiangqqlmj@163.com ...

  3. 5G NR学习笔记:帧结构和物理资源

    5G NR学习笔记:帧结构和物理资源 参数集(numerology) 与LTE的参数集(子载波间隔和符号长度)不同,NR支持不同的子载波间隔(Sub-Carrier Spacing, SCS),所有的 ...

  4. oracle scn 重置,学习笔记:Oracle SCN详解 SCN与Oracle数据库恢复的关系

    天萃荷净 分享一篇关于Oracle SCN的详解,介绍SCN与Oracle数据库恢复的关系和SCN在数据库中的作用 一.为什么需要System checkpoint SCN号与Datafile Che ...

  5. Kotlin 学习笔记(八)—— Kotlin类与对象之接口

    Kotlin 学习笔记(八)-- Kotlin类与对象之接口 Kotlin学习笔记系列教程 Kotlin 学习笔记(一)-- 概述.学习曲线.开发工具.参考资料 Kotlin 学习笔记(二)-- 基础 ...

  6. Kotlin 学习笔记(七)—— Kotlin类与对象之属性与字段

    Kotlin 学习笔记(七)-- Kotlin类与对象之属性与字段 Kotlin学习笔记系列教程 Kotlin 学习笔记(一)-- 概述.学习曲线.开发工具.参考资料 Kotlin 学习笔记(二)-- ...

  7. oracle 11g dul,【学习笔记】Oracle DUL 11 兼容Oracle 12C数据库的DUL工具最新版本

    天萃荷净 oracle dul 11 正式发布,迫不及待的下载来测试,现在版本号为dul 11.2.0.0.1,目前只发布了for linux,其他版本估计要等等.期待该版本有引进新功能 1.orac ...

  8. Python学习笔记(九):类和对象

    Python学习笔记(九):类和对象 关于类和对象 Python学习笔记(九):类和对象 一.类和对象 类的定义 类的实例化 类对象的使用 二.self用法 三.类方法 实例方法 类方法 静态方法 静 ...

  9. Solr6.7 学习笔记(01) -- 目录结构

    Solr解压后的目录结构 --contrib: Solr的一些扩展 --analysis-extras: 包含一些文本分析组件及其依赖 --clustering: 包含一个用于集群搜索结果的引擎 -- ...

最新文章

  1. Python matplotlib可视化:自定义轴标签格式化函数(在轴刻度上添加自定义的数值以及符号形式)、使用自定义函数在Matplotlib中为坐标轴刻度添加自定义符号(例如,货币符号¥$等)
  2. 第十六届全国大学生智能汽车竞赛华东赛区 承办情况汇报
  3. Android Color 判断色值小结
  4. php和python哪个学起来简单一点-python和php学习哪个更有发展
  5. 逆转线性单链表 c语言,单链表的逆转,不会做啊
  6. RHEL 5服务篇—使用Apache搭建Web服务(一)
  7. --c语言运算符_C按位运算符-能力问题和解答
  8. 《Python编程从入门到实践》记录之将Python函数存储在模块中(import、import*)
  9. NSString 截取字符串
  10. jQuery的创建对象,动态添加、修改、删除属性和方法
  11. 如何在官网下载java JDK
  12. jmeter ramp-up-period设置以及同步定时器使用
  13. 怎样配置 Docker IPv6 ?
  14. 计算机必须设置默认打印机,win10系统禁止更改默认打印机设置的还原技巧
  15. 伊斯坦布尔美丽风景mac高清桌面动态壁纸
  16. 苹果公司:Apple大中华区的注册开发者数量现已超过500万
  17. Trie(前缀树,prefix tree)
  18. 香港大学计算机科学学制,香港大学CS 计算机科学专业解析
  19. Java中的几种插件
  20. web前端面试--浏览器兼容性问题

热门文章

  1. 前端页面可视化设计工具
  2. Linux CentOS7 中 完美解决VMTools失效,windows 与 Liunx间完美复制文件,无报错的解决方案
  3. 转载:cin总结附带string输入总结
  4. 图书销售统计程序c语言,图书销售管理系统C语言程序报告.pdf
  5. python爬虫知识大全_Python爬虫知识点一
  6. 北斗导航 | 坐标转换:ECEF转LLA:GPS坐标系:WGS84(matlab代码)
  7. 怎么用计算机算亩数,怎样用手机测量亩数?
  8. signature=6a8815f5009aacac86e725bea54f840f,A wave packet signature for complex networks
  9. Unity3D重要知识点
  10. 端计算(4)-kotlin(2)