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 ...
随机推荐
- WordPress 一键置顶文章(推荐用SM Sticky Clicky Star)
在 WordPress入门 之 发布新文章和管理文章 中,倡萌已经简单提到可以在文章编辑界面或者快速编辑界面设置置顶文章,但是如果你想在后台文章列表中添加一键置顶文章的功能,不妨试试 Quick St ...
- sublime text3 自己定义的不同浏览器的预览快捷键
sublime text3 自己定义的不同浏览器的预览快捷键突然全部失效了,搞到现在一直没闹清楚怎么回事,翻看插件发现SideBarEnhancements这插件刚更新了,快捷键也是依赖这个插件弄得. ...
- 开源游戏地图编辑器MarbleMap
开源游戏地图编辑器MarbleMap MIT协议,MarbleMap是一款as3开发的游戏地图编辑器,他免费开源,同时支持Cocos2d-x坐标系和AS3坐标系,功能丰富,不过是一款新推出的开源项目, ...
- 转:python cgi编程
转:http://www.runoob.com/Python/python-cgi.html 什么是CGI CGI 目前由NCSA维护,NCSA定义CGI如下: CGI(Common Gateway ...
- SublimeCodeIntel代码自动补全配置
主要使用python3,所有配置以python3为例.其他语言同理.利用sublimeCodeIntel插件可以实现自动提示python3代码.跳转追踪自定义函数.查看系统函数等.功能还是相当强大的. ...
- 【go】继续go go go,ubuntu环境搭建及golang的依赖关系分析
这次是在ubuntu14.04 amd64上搭建go的编译环境,使用的IDE换成了sublime text,具体步骤参照的是 http://blog.csdn.net/aqiang912/articl ...
- Java 对象池实现
http://blog.csdn.net/bryantd/article/details/1100019 http://www.cnblogs.com/devinzhang/archive/2012/ ...
- noip 2016 day1 T1玩具谜题
题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业. 有一天, 这些玩具小人把小南的眼镜藏了起来. 小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的面朝圈外.如下图: 这时singer告诉 ...
- Mysql五种时间格式
YEAR [字节数]:1 [取值范围]:1901~2155 [赋值]: 4位数字 2位字符串:'00'~'69'相当于2000~2069:'70'~'99'相当于1970~1999 2位数字:与2位数 ...
- mqtt 协议之 PINGREQ, PINGRESP
mqtt 协议里最简单的是 ping 协议吧 (心跳包), ping 协议是已连接的客户端发往服务端, 告诉服务端,我还"活着" PINGREQ - PING request fi ...