大家新年好!不知不觉我们来到了2013年,军哥祝大家在新的一年里身体儿杠杠滴,吃嘛嘛香,新年新气象,财源滚滚~~
今天我们来学习CI中的模型和辅助函数。
【本讲内容】
一、模型;
之前我们分别介绍了MVC模式中的C层和V层,而M层还没有谈到。现在我们来谈一谈。
了解什么是模型?如何创建一个简单的模型?怎样载入模型?
二、辅助函数。
当我们需要完成某些特定任务的时候,辅助函数将会派上用场啦。还记得军哥在第一讲中介绍CI能够为我们做什么的时候,讲到其中有一个好处是减少代码量,那CI的辅助函数就可以帮助我们做到这一点。
【具体内容】
1、模型。
(1)、什么是模型?
模型对于那些传统MVC方式的人来说是可选的。比如,我们之前讲的一些例子中就没有用到M层,那是由于我们暂时还没有涉及到与数据库的操作,一旦涉及到数据库操作,我们就要用M层了,因为模型(M)就是专门用来和数据库打交道的。
(2)、那怎么样创建一个模型呢?
其实模型就是一个PHP类,里面包含添加、删除、更新和统计数据等方法,我们来创建一个简单的看一下,代码如下:
-
class User_model extends CI_Model {
-
-
function __construct()
-
{
-
parent::__construct();
-
}
-
-
//执行获取数据操作
-
function get()
-
{
-
//代码省略……
-
}
-
-
//执行添加数据操作
-
function insert()
-
{
-
//代码省略……
-
}
-
-
-
//执行更新数据操作
-
function update()
-
{
-
//代码省略……
-
}
-
-
-
//执行删除数据操作
-
function delete()
-
{
-
//代码省略……
-
}
-
}
此时我们需要注意以下几点:
a、创建的模型类文件应该放在application/models/
文件夹,文件名应该是模型类名的小写格式。例如上例当中的,文件名应该为user_model.php;
b、类名的首字母必须大写,其他字母小写;
c、确保你的类继承了基本模型类(CI_Model)。
那这样的模型文件建好了,该怎么用呢?
(3)、载入模型。
我们写好的模型是通过控制器来载入和引用的。载入模型在CI中有两种方式:
一种是手动载入,假如我们想载入上面那个模型类,那它可以很容易的在控制器中的方法中装载,就像这样:
-
$this->load->model('User_model');
以上通常都放在控制器的构造函数中进行装载,毕竟这样只需要手动装载一次就够了。
另一种是自动载入,找到并打开 application/config/autoload.php 文件,然后在自动装载数组中加入这个模型,只要设置$autoload['model'] =
array();为:
-
$autoload['model'] = array('user_model');
载入完模型之后,我们就可以使用它了:
-
$this->User_model->add();
-
$this->User_model->insert();
接下来军哥带大家写一个完整的例子,把之前讲的内容一起连贯起来,正好也复习一下。
由于我们会涉及到数据库操作,因此首先要进行数据库的配置,打开
application/config/database.php文件,设置连接数据库的一些参数值,如下:
-
$db['default']['hostname'] = 'localhost';
-
$db['default']['username'] = '你的数据库主机名';
-
$db['default']['password'] = '你的数据库密码';
-
$db['default']['dbdriver'] = 'mysql';
-
$db['default']['database'] =
'你的数据库名';
上面只是设置了其中一部分的参数,想了解更多你可以浏览CI中国的中文手册, 。
然后我们开始建一个数据表,这里叫user表,表结构如下:
-
create table user (
-
id int(11) auto_increment primary key not null,
-
name varchar(30) not null default '',
-
nickname varchar(50) not null default '',
-
sex varchar(20) not null default '男',
-
age int(11) not null default 0
-
);
我们插入一条数据,如下:
-
insert into user values(null,'JayJun','排骨哥','男','26');
-
insert into user
values(null,'浩哥','猥琐男','男','27');
接下来我们写一个用户模型,就起名为user_model.php,代码如下:
-
-
class User_model extends CI_Model {
-
//获取用户信息
-
public function get()
-
{
-
$data = '';
-
//SQL语句的select部分,这里查询user表的所有字段
-
$this->db->select("*");
-
//运行选择查询语句并且返回结果集给$data
-
$data = $this->db->get("user");
-
return $data;
-
}
-
}
-
?>
紧接着写控制器,起名为user.php,代码如下:
-
-
class User extends CI_Controller{
-
//构造函数
-
function __construct()
-
{
-
parent::__construct();
-
//载入用户模型
-
$this->load->model("User_model");
-
}
-
//显示用户信息列表
-
public function index()
-
{
-
//调用用户模型中的get方法,将结果集返回给$query
-
$query = $this->User_model->get();
-
//将结果集作为关联数组返回
-
$data['userList'] = $query->result_array();
-
$this->load->view('user_index',$data);
-
}
-
}
-
?>
最后,我们开始写视图,代码如下:
-
-
-
-
一个带模型的简单示例
-
-
-
-
-
好,现了我们打开浏览器,输入即可访问到用户列表啦!
亲,如果你没有出现错误的话,应该会出现下图所示的结果:
2、辅助函数。
说起函数,这真不得不说函数是个好东西啊,它能够辅助我们解决很多复杂的问题,大家都知道,函数也是为了重用而发明的,能够减少我们的代码量,提高我们的编码效率,我们许多时候是离不开它的。而最关键的是CI本身就为我们提供了一系列的功能不同的辅助函数文件。军哥截了一张CI中国中文手册上的截图,如下图所示:
我们从图中可以看到CI为我们提供了多达21种辅助函数文件。像这其中就有用于处理数组操作的数组辅助函数文件(Array
Helpers)、帮助你创建表单的表单辅助函数文件(Form Helpers)以及帮助我们创建链接的URL辅助函数文件(URL
Helpers)等等。若这些还不能满足你的需求,你也可以很轻易的“扩展”这些函数文件或者使用自定义的函数文件。
辅助函数文件一般保存在
system/helpers 或 application/helpers 文件夹中。CI将会先在 application/helpers
寻找对应的辅助函数文件, 如果目录不存在或者目录下没有对应的辅助函数文件,CI
才会载入system/helpers下的辅助函数文件。
(1)、载入辅助函数。
CI
默认是没有载入辅助函数文件的,所以如果你想用辅助函数,就必须先载入它。
一旦被载入,辅助函数将全局可用,你可以在控制器和视图中使用它们。我们像这样载入辅助函数文件:
-
$this->load->helper('辅助函数文件名字,不带_helper和.php后缀的那部分');
比方说,你想载入数组辅助函数文件,就像这样:
-
$this->load->helper("array");
如果你想一次载入多个辅助函数,你可以这样做:
-
$this->load->helper( array('helper1', 'helper2', 'helper3')
);
(2)、使用辅助函数。
比方说当载入一个URL辅助函数文件之后,我们就可以使用里面的某个函数了,像anchor(),它有三个可选参数:
-
anchor(uri segments, text,
attributes);
第一个参数包含你想附加到URL上的一些参数;
第二个参数是你想链接的名字;
第三个参数包含一组你想附加给链接的属性。
举个例子看一下:
-
-
echo anchor('jayjun/feadback','反馈&交流','title="反馈&交流"') ;
-
?>
等同于:
(3)、“扩展”辅助函数。
如果你想做的只是在原有的辅助函数文件中添加一些新的功能,比如,添加一两个新的方法,或者是修改一个方法;就不值得重写自己的辅助函数文件。在这种情况下,最好是“扩展”已有的辅助函数文件。
例如,军哥在写PHPer小站的搜素功能时,需要将搜索结果的二维数组重复值去掉(详情见: ),而原有的数组辅助函数文件中却没有函数能够做到,此时就要自定义一个函数来帮我们处理,也就是
说"扩展"一个数组辅助函数文件,这时应该建立一个文件:application/helpers/MY_array_helper.php,将自定义的函数写进去即可在控制器中使用了。
下一讲,我们来学习如何使用CI中的类库和如何创建一个自己的类库。
阅读(455) | 评论(0) | 转发(0) |