ci目录结构                                                                                   

  1. |-----system 框架程序目录
  2. |-----core 框架的核心程序
  3. |-----CodeIgniter.php 引导性文件
  4. |-----Common.php 加载基类库的公共函数
  5. |-----Controller.php 基控制器类文件:CI_Controller
  6. |-----Model.php 基模型类文件:CI_Model
  7. |-----Config.php 配置类文件:CI_Config
  8. |-----Input.php 输入类文件:CI_Input
  9. |-----Output.php 输出类文件:CI_Output
  10. |-----URL.php URL类文件:CI_URl
  11. |-----Router.php 路由类文件:CI_Router
  12. |-----Loader.php 加载类文件:CI_Loader
  13. |-----helpers 辅助函数
  14. |-----url_helper.php url相关的辅助函数,如:创建url的辅助函数
  15. |-----captcha_helper.php创建图形验证码的辅助函数
  16. |-----libraries 通用类库
  17. |-----Pagination.php 通用分页类库
  18. |-----Upload.php 通用文件上传类库
  19. |-----Image_lib.php 通用图像处理类库
  20. |-----Session.php 通用session类库
  21. |-----language 语言包
  22. |-----database 数据库操作相关的程序
  23. |-----DB_active_rec.php 快捷操作类文件(ActiveRecord)
  24. |-----fonts 字库
  25.  
  26. |-----application 项目目录
  27. |-----core 项目的核心程序
  28. |-----helpers 项目的辅助函数
  29. |-----libraries 通用类库
  30. |-----language 语言包
  31. |-----config 项目相关的配置
  32. |-----config.php 项目相关的配置文件
  33. |-----database.php 数据库相关的配置文件
  34. |-----autoload.php 设置自动加载类库的配置文件
  35. |-----constants.php 常量配置文件
  36. |-----routes.php 路由配置文件
  37. |-----controllers 控制器目录
  38. |-----welcome.php 控制器文件,继承CI_Controller
  39. |-----models 模型目录
  40. |-----welcome_model.php 模型文件,继承CI_Model
  41. |-----views 视图目录
  42. |-----welcome.php 视图模板文件,默认后缀名为.php
  43. |-----cache 存放数据或模板的缓存文件
  44. |-----errors 错误提示模板
  45. |-----hooks 钩子,在不修改系统核心文件的基础上扩展系统功能
  46. |-----third_party 第三方库
  47. |-----logs 日志
  48.  
  49. |-----index.php 入口文件

访问形式                                                                                     

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

  1. public function hello()
  2. {
  3. echo "test";
  4. }

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

自己新建控制器,hello.php:

  1. <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
  2.  
  3. class Hello extends CI_Controller
  4. {
  5. public function sayHello($name)
  6. {
  7. echo $name,",Hello World";
  8. }
  9. }
  10. ?>

注意:

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

加载视图                                                                                    

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

  1. <html>
  2. <head>
  3. </head>
  4. <body>
  5. test_ci_hello_world
  6. </body>
  7. </html>

控制器:

  1. public function addView()
  2. {
  3. $this->load->view("view_test");
  4. }

或者:

  1. public function addView2()
  2. {
  3. $this->load->view("view/test");
  4. }

效果:

分配变量                                                                                     

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

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

视图:

  1. <html>
  2. <head>
  3. </head>
  4. <body>
  5. <h1><?php echo $title;?></h1>
  6. <h1><?php echo $new_title;?></h1>
  7. test_ci_hello_world
  8. <table>
  9. <?php foreach($list as $item):?>
  10. <tr>
  11. <td><?=$item['id']?></td>
  12. <td><?=$item['name']?></td>
  13. <td><?=$item['email']?></td>
  14. </tr>
  15. <?php endforeach;?>
  16. </table>
  17. </body>
  18. </html>

效果:

load网站进去,控制器:

  1. public function addView()
  2. {
  3. $this->load->vars("title","value");
  4. $list = array(
  5. array('id'=>1,'name'=>'jack','email'=>'123@123.com'),
  6. array('id'=>2,'name'=>'jack2','email'=>'1233@123.com'),
  7. array('id'=>3,'name'=>'jack3','email'=>'12333@123.com')
  8. );
  9. $data['new_title']="标题";
  10. $data['list']=$list;
  11. $this->load->vars($data);
  12.  
  13. $this->load->view("view_test");
  14. $this->load->view("footer");
  15. }

视图view_test:

  1. <html>
  2. <head>
  3. </head>
  4. <body>
  5. <h1><?php echo $title;?></h1>
  6. <h1><?php echo $new_title;?></h1>
  7. test_ci_hello_world
  8. <table>
  9. <?php foreach($list as $item):?>
  10. <tr>
  11. <td><?=$item['id']?></td>
  12. <td><?=$item['name']?></td>
  13. <td><?=$item['email']?></td>
  14. </tr>
  15. <?php endforeach;?>
  16. </table>

视图footer:

  1. CI_hello_world!!!
  2. </body>
  3. </html>

显示效果:

uri参数获取                                                                                

控制器:

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

效果:

加载数据库                                                                                 

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

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

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

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

  1. class Model_name extends CI_Model
  2. {
  3. function __construct()
  4. {
  5. parent::__construct();
  6. }
  7. }

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

  1. $this->load->database();

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

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

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

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

AR操作数据库                                                                              

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

  1. //查询
  2. public function index()
  3. {
  4. $res = $this->db->get('表名');//这里自动调用前缀
  5. foreach($res->result() as $item)
  6. {
  7. echo $item->name."<br />";
  8. }
  9. }
  1. //插入
  2. public function index()
  3. {
  4. $data=array(
  5. 'name'=>'lisi',
  6. 'password'=>md5('lisi')
  7. );
  8. $bool = $this->db->insert("表名",$data);
  9. var_dump($bool);
  10. }
  1. //更新
  2. public function index()
  3. {
  4. $data=array(
  5. 'name'=>'wangwu',
  6. 'password'=>md5('wangwu')
  7. );
  8.  
  9. $bool = $this->db->update('表名',$data,array('id'=>3));
  10. var_dump($bool);
  11. }
  1. //删除
  2. $bool = $this->db->delete('表名',array('id'=>2));
  3. var_dump($bool);

ci框架(一)的更多相关文章

  1. ci框架登陆之后每隔几分钟就需要重新登录的问题

    一个简单的登陆写好之后,发现每次进入需要登陆之后才能进入的页面都会跳转到登录页面,猜测应该是session被清了,打印出来,果然为空,但是我没有设置session的生存周期,按照默认的应该是24小时, ...

  2. 第一天ci框架开发商城2

    ci框架开发商城2 1/28/2016 9:45:52 PM mvc完整案例 mvc完成新闻的增删改查 news控制器news.php class News extends CI_controller ...

  3. 第一天ci框架开发商城1

    ci框架开发商城1 1/28/2016 9:43:52 PM userguide删除 system application controllers 控制器 models 模型 views 视图 模板 ...

  4. CI框架之HOOKS使用流程及原理

        Ci框架中Hooks可以理解:在框架的执行流程过程中,允许开发者在固定的某些时间点上(如:调用控制器前,调用控制器后等时间点上),调用其他函数来扩充CI框架执行流程的一种方法.技术上来就是通过 ...

  5. CI框架使用PHPmail插件发送QQ邮件:

    有助请顶,不好请评.0:33 2016/3/12CI框架使用PHPmail插件发送QQ邮件:发送成功,不过修改了主机参数,还包含了一个phpmail中的一个另外的文件,详见下方:参见:http://c ...

  6. 初学后台框架总结篇二——快速了解CI框架

    一.下载CI框架并安装,这里放置一张自己的项目目录结构图 目录框架搭建好之后开始将自己的项目与框架融合 二.更改相关配置 1.用任何文本编辑器打开 application/config/config. ...

  7. CI框架,源代码一次性判断获取post(get)数据是否有某个字段值为空方法

    一.以下是CI框架 1.把所有的要接收的字段放在数组中 例: 我要接收:id,name,age,mobile 等字段 $req = array('id','name','age','mobile'); ...

  8. CI框架搭建

    CI 框架等移植到不同等环境十分方便,只要改很少等配置: 1.修改config.php 文件(修改这一个文件就可以跑通了): $config['base_url'] = 'http://127.0.0 ...

  9. ngnix 配置CI框架 与 CI的简单使用

    ngnix 支持 CI框架1.修改config.php 参考网址:https://www.chenyudong.com/archives/codeigniter-in-nginx-and-url-re ...

  10. CI框架如何在主目录application目录之外使用uploadify上传插件和bootstrap前端框架:

    19:29 2016/3/10CI框架如何在主目录application目录之外使用uploadify上传插件和bootstrap前端框架:项目主路径:F:\wamp\www\graduationPr ...

随机推荐

  1. WordPress函数query_posts用法汇总

    最近经常有网友跟我咨询WordPress函数query_posts的相关用法,说起来query_posts实在是太强大,参数无数,用法更是无数,如果让我说它的用法,我根本没法一一说清楚.开始之前,你可 ...

  2. Java 类、属性、方法修饰符 public、private、protected、default

    Java 中修饰类修饰符:public .default (默认) Java 中修饰类中属性.方法修饰符:public.private.protected.default (默认) 通过 IDEA 创 ...

  3. vue-touch不支持vue2.0的替换方法

    当你想用vue-touch时,却发现官网这句话 Touch events plugin for Vue.js. This plugin does not support Vue 2.0 yet. 但是 ...

  4. ubuntu16.04编译安装GPAC

    参考:http://blog.csdn.net/tianlong_hust/article/details/9273875 1.获取gpac的源代码 sudo apt-get install subv ...

  5. 将对象转换为JSON字符串

    将对象转换为JSON串: 方案一: 可以通过json-lib工具jar包进行转化:在www.json.org官网下载jar包. 方案二: 通过ObjectMapper对象进行转换 需要引入相应的jar ...

  6. vmware漏洞之三——Vmware虚拟机逃逸漏洞(CVE-2017-4901)Exploit代码分析与利用

    本文简单分析了代码的结构.有助于理解. 转:http://www.freebuf.com/news/141442.html 0×01 事件分析 2017年7月19 unamer在其github上发布了 ...

  7. 转:Super Awesome Fuzzing, Part One

    转:https://labsblog.f-secure.com/2017/06/22/super-awesome-fuzzing-part-one/ An informative guide on u ...

  8. php定位并且获取天气信息

    /** *获取天气预报信息 **/ header("Content-type: text/html; charset=utf-8"); class getWeather{ priv ...

  9. 【DFS】【枚举】Gym - 101246G - Revolutionary Roads

    给你一张有向图,问你将任意一条边变成双向后,所能得到的最大强连通分量的大小. 缩点之后,预处理can(i,j)表示i能到j. 之后枚举每一条边(u,v),再枚举其他所有点t,如果can(u,t) &a ...

  10. 【Java】【高精度】【递推】UVA - 11375 - Matches

    d[i+c[j]]+=d[i](c[j]是拼成j所需的火柴数) d[0]=1: 别忘了不能有前导零,所以当i为零时,不要尝试去拼成零.反而应该在n>=6时,最后给答案加1(单独拼出0). imp ...