《军哥谈CI框架》之入门教程之第四讲

2024-06-19 05:38

本文主要是介绍《军哥谈CI框架》之入门教程之第四讲,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

大家新年好!不知不觉我们来到了2013年,军哥祝大家在新的一年里身体儿杠杠滴,吃嘛嘛香,新年新气象,财源滚滚~~

今天我们来学习CI中的模型和辅助函数。

【本讲内容】

一、模型;

之前我们分别介绍了MVC模式中的C层和V层,而M层还没有谈到。现在我们来谈一谈。


了解什么是模型?如何创建一个简单的模型?怎样载入模型?


二、辅助函数。

当我们需要完成某些特定任务的时候,辅助函数将会派上用场啦。还记得军哥在第一讲中介绍CI能够为我们做什么的时候,讲到其中有一个好处是减少代码量,那CI的辅助函数就可以帮助我们做到这一点。


【具体内容】

1、模型。
(1)、什么是模型?

模型对于那些传统MVC方式的人来说是可选的。比如,我们之前讲的一些例子中就没有用到M层,那是由于我们暂时还没有涉及到与数据库的操作,一旦涉及到数据库操作,我们就要用M层了,因为模型(M)就是专门用来和数据库打交道的。

(2)、那怎么样创建一个模型呢?

其实模型就是一个PHP类,里面包含添加、删除、更新和统计数据等方法,我们来创建一个简单的看一下,代码如下:
  1. class User_model extends CI_Model {  
  2.                           
  3.     function __construct()  
  4.     {  
  5.     parent::__construct();  
  6.     }  
  7.                           
  8.     //执行获取数据操作  
  9.     function get()  
  10.     {  
  11.    //代码省略……  
  12.     }  
  13.                           
  14.     //执行添加数据操作  
  15.     function insert()  
  16.     {  
  17.     //代码省略……  
  18.     }  
  19.                           
  20.                           
  21.     //执行更新数据操作  
  22.     function update()  
  23.     {  
  24.     //代码省略……  
  25.     }  
  26.                         
  27.                         
  28.     //执行删除数据操作  
  29.     function delete()  
  30.     {  
  31.     //代码省略……  
  32.     }  
  33. }

此时我们需要注意以下几点:


a、创建的模型类文件应该放在application/models/ 文件夹,文件名应该是模型类名的小写格式。例如上例当中的,文件名应该为user_model.php;


b、类名的首字母必须大写,其他字母小写;


c、确保你的类继承了基本模型类(CI_Model)。


那这样的模型文件建好了,该怎么用呢?


(3)、载入模型。


我们写好的模型是通过控制器来载入和引用的。载入模型在CI中有两种方式:


一种是手动载入, 假如我们想载入上面那个模型类,那它可以很容易的在控制器中的方法中装载,就像这样:
  1. $this->load->model('User_model');
    以上通常都放在控制器的构造函数中进行装载,毕竟这样只需要手动装载一次就够了。

    另一种是自动载入,找到并打开 application/config/autoload.php 文件,然后在自动装载数组中加入这个模型,只要设置$autoload['model'] = array();为:
  1. $autoload['model'] = array('user_model');
载入完模型之后,我们就可以使用它了:
  1. $this->User_model->add();  
  2. $this->User_model->insert();

接下来军哥带大家写一个完整的例子,把之前讲的内容一起连贯起来,正好也复习一下。


由于我们会涉及到数据库操作,因此首先要进行数据库的配置,打开 application/config/database.php文件,设置连接数据库的一些参数值,如下:
  1. $db['default']['hostname'] = 'localhost';  
  2. $db['default']['username'] = '你的数据库主机名';  
  3. $db['default']['password'] = '你的数据库密码';  
  4. $db['default']['dbdriver'] = 'mysql';  
  5. $db['default']['database'] = '你的数据库名';

上面只是设置了其中一部分的参数,想了解更多你可以浏览CI中国的中文手册, http://codeigniter.org.cn/user_guide/database/configuration.html 。


然后我们开始建一个数据表,这里叫user表,表结构如下:
  1. create table user (  
  2.     id int(11) auto_increment primary key not null,  
  3.     name varchar(30) not null default '',  
  4.     nickname varchar(50) not null default '',  
  5.     sex varchar(20) not null default '男',  
  6.     age int(11) not null default 0  
  7. );

我们插入一条数据,如下:
  1. insert into user values(null,'JayJun','排骨哥','男','26');  
  2. insert into user values(null,'浩哥','猥琐男','男','27');
接下来我们写一个用户模型,就起名为user_model.php,代码如下:
  1. <?php  
  2.      class User_model extends CI_Model {  
  3.     //获取用户信息  
  4.     public function get()  
  5.     {  
  6.         $data = '';  
  7.         //SQL语句的select部分,这里查询user表的所有字段  
  8.         $this->db->select("*");  
  9.        //运行选择查询语句并且返回结果集给$data  
  10.        $data = $this->db->get("user");  
  11.        return $data;  
  12.      }  
  13.      }  
  14. ?>
紧接着写控制器,起名为user.php,代码如下:
  1. <?php  
  2.      class User extends CI_Controller{  
  3.     //构造函数  
  4.     function __construct()  
  5.     {  
  6.        parent::__construct();  
  7.        //载入用户模型  
  8.        $this->load->model("User_model");  
  9.     }  
  10.     //显示用户信息列表  
  11.     public function index()  
  12.     {  
  13.         //调用用户模型中的get方法,将结果集返回给$query  
  14.         $query = $this->User_model->get();  
  15.         //将结果集作为关联数组返回  
  16.         $data['userList'] = $query->result_array();  
  17.         $this->load->view('user_index',$data);
  18.      }  
  19.      }  
  20. ?>
最后,我们开始写视图,代码如下:
  1. <html>  
  2.     <head>  
  3.         <meta http-equiv="content-type" content="text/html; charset=utf-8">  
  4.         <title>一个带模型的简单示例</title>  
  5.     </head>  
  6.     <body>  
  7.         <div>  
  8.             <table width="500px">  
  9.                 <tr>  
  10.                     <th>ID号</th>  
  11.                     <th>姓名</th>  
  12.                     <th>外号</th>  
  13.                     <th>性别</th>  
  14.                     <th>年龄</th>  
  15.                 </tr>  
  16.                 <?php foreach ($userList as $item): ?>  
  17.                 <tr style="text-align:center;">  
  18.                     <td><?php echo $item['id'] ;?></td>  
  19.                     <td><?php echo $item['name'] ;?></td>  
  20.                     <td><?php echo $item['nickname'] ;?></td>  
  21.                     <td><?php echo $item['sex'] ;?></td>  
  22.                     <td><?php echo $item['age'] ;?></td>  
  23.                 </tr>  
  24.                 <?php endforeach; ?>  
  25.             </table>  
  26.         
  
  •     </body>  
  • </html>

    好,现了我们打开浏览器,输入http://localhost/ci_demo/index.php/user/index即可访问到用户列表啦!

  • 亲,如果你没有出现错误的话,应该会出现下图所示的结果:




    2、辅助函数。

    说起函数,这真不得不说函数是个好东西啊,它能够辅助我们解决很多复杂的问题,大家都知道,函数也是为了重用而发明的,能够减少我们的代码量,提高我们的编码效率,我们许多时候是离不开它的。而最关键的是CI本身就为我们提供了一系列的功能不同的辅助函数文件。军哥截了一张CI中国中文手册上的截图,如下图所示:





    我们从图中可以看到CI为我们提供了多达21种辅助函数文件。像这其中就有用于处理数组操作的数组辅助函数文件(Array Helpers)、帮助你创建表单的表单辅助函数文件(Form Helpers)以及帮助我们创建链接的URL辅助函数文件(URL Helpers)等等。若这些还不能满足你的需求,你也可以很轻易的“扩展”这些函数文件或者使用自定义的函数文件。

    辅助函数文件一般保存在 system/helpers 或 application/helpers 文件夹中。CI将会先在 application/helpers 寻找对应的辅助函数文件, 如果目录不存在或者目录下没有对应的辅助函数文件,CI 才会载入system/helpers下的辅助函数文件。

    (1)、载入辅助函数。

    CI 默认是没有载入辅助函数文件的,所以如果你想用辅助函数,就必须先载入它。 一旦被载入,辅助函数将全局可用,你可以在控制器和视图中使用它们。我们像这样载入辅助函数文件:
    1. $this->load->helper('辅助函数文件名字,不带_helper和.php后缀的那部分');

    比方说,你想载入数组辅助函数文件,就像这样:
    1. $this->load->helper("array");

      如果你想一次载入多个辅助函数,你可以这样做:
    1. $this->load->helper( array('helper1', 'helper2', 'helper3') );
    (2)、使用辅助函数。


    比方说当载入一个URL辅助函数文件之后,我们就可以使用里面的某个函数了,像anchor(),它有三个可选参数:
    1. anchor(uri segments, text, attributes);
    第一个参数包含你想附加到URL上的一些参数;

    第二个参数是你想链接的名字;

    第三个参数包含一组你想附加给链接的属性。

    举个例子看一下:
    1. <?php  
    2.     echo anchor('jayjun/feadback','反馈&交流','title="反馈&交流"') ;
    3. ?>
    等同于:
    1. <a href="http://yousite/index.php/jayjun/feadback" title="反馈&交流">反馈&交流
    (3)、“扩展”辅助函数。

    如果你想做的只是在原有的辅助函数文件中添加一些新的功能,比如,添加一两个新的方法,或者是修改一个方法;就不值得重写自己的辅助函数文件。在这种情况下,最好是“扩展”已有的辅助函数文件。

    例如,军哥在写PHPer小站的搜素功能时,需要将搜索结果的二维数组重复值去掉(详情见: http://phpersite.sinaapp.com/index.php/jayjun/doc/start/2/cid/28/aid/62.html ),而原有的数组辅助函数文件中却没有函数能够做到,此时就要自定义一个函数来帮我们处理,也就是 说"扩展"一个数组辅助函数文件,这时应该建立一个文件:application/helpers/MY_array_helper.php,将自定义的函数写进去即可在控制器中使用了。

    下一讲,我们来学习如何使用CI中的类库和如何创建一个自己的类库。


    <script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/buttonLite.js#style=-1&uuid=&pophcol=3&lang=zh"></script> <script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/bshareC0.js"></script>
    阅读(75) | 评论(0) | 转发(0) |
    0

    上一篇:我的职业规划

    下一篇:[技术贴] 微博发贴时,如何检测@了哪些用户

    相关热门文章
    • Symfony框架学习:快速入门...
    • Hadoop 新 MapReduce 框架 Yar...
    • 房地产调控“去行政化”将是未...
    • 皇马传奇巨星率队返伯纳乌 桑...
    • 72*36*53 尺寸,表式胶机?EPE...
    • phpStudy 2013下载,PHP5开发...
    • 草和谐榴社区caoliushequ...
    • 灵芝的种类和图片
    • 为PHP添加GD库支持
    • 秋天的惆怅
    • 大家都是用什么来管理hadoop集...
    • 网站被人挂了吗,添加了些程序...
    • Nginx如何保证不走宕机的那个...
    • 大家谈谈MYSQL客户端和服务器...
    • 以下代码运行后为何会输出5?...
    给主人留下些什么吧!~~
    评论热议

这篇关于《军哥谈CI框架》之入门教程之第四讲的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1074161

相关文章

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Python GUI框架中的PyQt详解

《PythonGUI框架中的PyQt详解》PyQt是Python语言中最强大且广泛应用的GUI框架之一,基于Qt库的Python绑定实现,本文将深入解析PyQt的核心模块,并通过代码示例展示其应用场... 目录一、PyQt核心模块概览二、核心模块详解与示例1. QtCore - 核心基础模块2. QtWid

最新Spring Security实战教程之Spring Security安全框架指南

《最新SpringSecurity实战教程之SpringSecurity安全框架指南》SpringSecurity是Spring生态系统中的核心组件,提供认证、授权和防护机制,以保护应用免受各种安... 目录前言什么是Spring Security?同类框架对比Spring Security典型应用场景传统

Python结合Flask框架构建一个简易的远程控制系统

《Python结合Flask框架构建一个简易的远程控制系统》这篇文章主要为大家详细介绍了如何使用Python与Flask框架构建一个简易的远程控制系统,能够远程执行操作命令(如关机、重启、锁屏等),还... 目录1.概述2.功能使用系统命令执行实时屏幕监控3. BUG修复过程1. Authorization

SpringBoot集成图片验证码框架easy-captcha的详细过程

《SpringBoot集成图片验证码框架easy-captcha的详细过程》本文介绍了如何将Easy-Captcha框架集成到SpringBoot项目中,实现图片验证码功能,Easy-Captcha是... 目录SpringBoot集成图片验证码框架easy-captcha一、引言二、依赖三、代码1. Ea

Gin框架中的GET和POST表单处理的实现

《Gin框架中的GET和POST表单处理的实现》Gin框架提供了简单而强大的机制来处理GET和POST表单提交的数据,通过c.Query、c.PostForm、c.Bind和c.Request.For... 目录一、GET表单处理二、POST表单处理1. 使用c.PostForm获取表单字段:2. 绑定到结

Docker部署Jenkins持续集成(CI)工具的实现

《Docker部署Jenkins持续集成(CI)工具的实现》Jenkins是一个流行的开源自动化工具,广泛应用于持续集成(CI)和持续交付(CD)的环境中,本文介绍了使用Docker部署Jenkins... 目录前言一、准备工作二、设置变量和目录结构三、配置 docker 权限和网络四、启动 Jenkins

修改若依框架Token的过期时间问题

《修改若依框架Token的过期时间问题》本文介绍了如何修改若依框架中Token的过期时间,通过修改`application.yml`文件中的配置来实现,默认单位为分钟,希望此经验对大家有所帮助,也欢迎... 目录修改若依框架Token的过期时间修改Token的过期时间关闭Token的过期时js间总结修改若依

Docker集成CI/CD的项目实践

《Docker集成CI/CD的项目实践》本文主要介绍了Docker集成CI/CD的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、引言1.1 什么是 CI/CD?1.2 docker 在 CI/CD 中的作用二、Docke