ci框架(一)
ci目录结构
|-----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 入口文件
访问形式
在\application\controllers\welcome.php中添加函数:
public function hello()
{
echo "test";
}

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";
}
}
?>

注意:
- 方法名以下划线开头的是不能访问成功的,只能间接访问。
- 只能访问public修饰的方法。
- 尽量不要与类名相同的方法,会当作构造函数。
加载视图
application\views\view_test.php或者application\views\view\test.php(这中做法主要是方便同一类型的视图可以放在同一个文件夹下方便管理)
<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");
}
效果:


分配变量
把数据从控制器中传到视图中,控制器:
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>
效果:

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>
显示效果:

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 />";
}
效果:

加载数据库
这个操作在MVC中是放到model中做的。
在\application\config\database.php中配置数据库参数,注意dbprefix和swap_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);
ci框架(一)的更多相关文章
- ci框架登陆之后每隔几分钟就需要重新登录的问题
一个简单的登陆写好之后,发现每次进入需要登陆之后才能进入的页面都会跳转到登录页面,猜测应该是session被清了,打印出来,果然为空,但是我没有设置session的生存周期,按照默认的应该是24小时, ...
- 第一天ci框架开发商城2
ci框架开发商城2 1/28/2016 9:45:52 PM mvc完整案例 mvc完成新闻的增删改查 news控制器news.php class News extends CI_controller ...
- 第一天ci框架开发商城1
ci框架开发商城1 1/28/2016 9:43:52 PM userguide删除 system application controllers 控制器 models 模型 views 视图 模板 ...
- CI框架之HOOKS使用流程及原理
Ci框架中Hooks可以理解:在框架的执行流程过程中,允许开发者在固定的某些时间点上(如:调用控制器前,调用控制器后等时间点上),调用其他函数来扩充CI框架执行流程的一种方法.技术上来就是通过 ...
- CI框架使用PHPmail插件发送QQ邮件:
有助请顶,不好请评.0:33 2016/3/12CI框架使用PHPmail插件发送QQ邮件:发送成功,不过修改了主机参数,还包含了一个phpmail中的一个另外的文件,详见下方:参见:http://c ...
- 初学后台框架总结篇二——快速了解CI框架
一.下载CI框架并安装,这里放置一张自己的项目目录结构图 目录框架搭建好之后开始将自己的项目与框架融合 二.更改相关配置 1.用任何文本编辑器打开 application/config/config. ...
- CI框架,源代码一次性判断获取post(get)数据是否有某个字段值为空方法
一.以下是CI框架 1.把所有的要接收的字段放在数组中 例: 我要接收:id,name,age,mobile 等字段 $req = array('id','name','age','mobile'); ...
- CI框架搭建
CI 框架等移植到不同等环境十分方便,只要改很少等配置: 1.修改config.php 文件(修改这一个文件就可以跑通了): $config['base_url'] = 'http://127.0.0 ...
- ngnix 配置CI框架 与 CI的简单使用
ngnix 支持 CI框架1.修改config.php 参考网址:https://www.chenyudong.com/archives/codeigniter-in-nginx-and-url-re ...
- CI框架如何在主目录application目录之外使用uploadify上传插件和bootstrap前端框架:
19:29 2016/3/10CI框架如何在主目录application目录之外使用uploadify上传插件和bootstrap前端框架:项目主路径:F:\wamp\www\graduationPr ...
随机推荐
- Spiral Matrix I&&II
Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral or ...
- IIS 7/8安装SSL证书
文件说明:1. 证书文件1532113691949.pem,包含两段内容,请不要删除任何一段内容.2. 如果是证书系统创建的CSR,还包含:证书私钥文件1532113691949.key.PFX格式证 ...
- SPOJ - PHRASES K - Relevant Phrases of Annihilation
K - Relevant Phrases of Annihilation 题目大意:给你 n 个串,问你最长的在每个字符串中出现两次且不重叠的子串的长度. 思路:二分长度,然后将height分块,看是 ...
- 【初探移动前端开发04】jQuery Mobile 一
网格布局 jquery mobile提供一种多列布局功能,由于移动设备的屏幕大小原因,一般情况还是不要使用多列布局啦. jquery mobile提供一种css样式规则来定义多列布局,对应css为ui ...
- zabbix主机自动发现
环境说明 角色 主机名 IP zabbix-server c1.heboan.com 192.168.88.1 zabbix-agent c2.heboan.com 192.168.88.2 zabb ...
- zoj 1375||poj 1230(贪心)
Pass-Muraille Time Limit: 2 Seconds Memory Limit: 65536 KB In modern day magic shows, passing t ...
- [Luogu1979][NOIP2013]华容道(BFS+SPFA)
考虑从起点到终点的过程,一定是先将空格子移到指定格子旁边,和指定格子交换,再移到下一个指定格子要到的地方,再交换,如此反复. 于是问题分为两个部分: 1.给定两个曼哈顿距离为2的格子求最短路,BFS即 ...
- 【DFS】佳佳的魔法阵
[vijos1284]佳佳的魔法阵 背景 也许是为了捕捉猎物(捕捉MM?),也许是因为其它原因,总之,佳佳准备设计一个魔法阵.而设计魔法阵涉及到的最关键问题,似乎就是那些带有魔力的宝石的摆放…… 描述 ...
- 【贪心】hdu6180 Schedule
题意:给你n个任务的开始时间和结束时间,一个机器同时最多执行一个任务,问你最少要几个机器.保证机器最少的前提下,问你每个机器的开动时间(最后一次关闭-第一次开启)之和最少是多少. 把这些线段画在数轴上 ...
- 【动态规划技巧题】POJ2229-Sumsets
[题目大意] 把一个数n分成2的指数幂相加的形式,问有几种情况. [思路] 如果当前i为奇数,则必定有至少一个1,可以看作i-1的情形再加上一个1.即f[i]=f[i-1]. 如果当前i为偶数,假设没 ...