《军哥谈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

相关文章

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映

Python库 Django 的简介、安装、用法入门教程

《Python库Django的简介、安装、用法入门教程》Django是Python最流行的Web框架之一,它帮助开发者快速、高效地构建功能强大的Web应用程序,接下来我们将从简介、安装到用法详解,... 目录一、Django 简介 二、Django 的安装教程 1. 创建虚拟环境2. 安装Django三、创

解决若依微服务框架启动报错的问题

《解决若依微服务框架启动报错的问题》Invalidboundstatement错误通常由MyBatis映射文件未正确加载或Nacos配置未读取导致,需检查XML的namespace与方法ID是否匹配,... 目录ruoyi-system模块报错报错详情nacos文件目录总结ruoyi-systnGLNYpe

Python Web框架Flask、Streamlit、FastAPI示例详解

《PythonWeb框架Flask、Streamlit、FastAPI示例详解》本文对比分析了Flask、Streamlit和FastAPI三大PythonWeb框架:Flask轻量灵活适合传统应用... 目录概述Flask详解Flask简介安装和基础配置核心概念路由和视图模板系统数据库集成实际示例Stre

Olingo分析和实践之OData框架核心组件初始化(关键步骤)

《Olingo分析和实践之OData框架核心组件初始化(关键步骤)》ODataSpringBootService通过初始化OData实例和服务元数据,构建框架核心能力与数据模型结构,实现序列化、URI... 目录概述第一步:OData实例创建1.1 OData.newInstance() 详细分析1.1.1

Spring 框架之Springfox使用详解

《Spring框架之Springfox使用详解》Springfox是Spring框架的API文档工具,集成Swagger规范,自动生成文档并支持多语言/版本,模块化设计便于扩展,但存在版本兼容性、性... 目录核心功能工作原理模块化设计使用示例注意事项优缺点优点缺点总结适用场景建议总结Springfox 是

Python的端到端测试框架SeleniumBase使用解读

《Python的端到端测试框架SeleniumBase使用解读》:本文主要介绍Python的端到端测试框架SeleniumBase使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录SeleniumBase详细介绍及用法指南什么是 SeleniumBase?SeleniumBase

C++ HTTP框架推荐(特点及优势)

《C++HTTP框架推荐(特点及优势)》:本文主要介绍C++HTTP框架推荐的相关资料,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Crow2. Drogon3. Pistache4. cpp-httplib5. Beast (Boos

SpringBoot基础框架详解

《SpringBoot基础框架详解》SpringBoot开发目的是为了简化Spring应用的创建、运行、调试和部署等,使用SpringBoot可以不用或者只需要很少的Spring配置就可以让企业项目快... 目录SpringBoot基础 – 框架介绍1.SpringBoot介绍1.1 概述1.2 核心功能2

Spring框架中@Lazy延迟加载原理和使用详解

《Spring框架中@Lazy延迟加载原理和使用详解》:本文主要介绍Spring框架中@Lazy延迟加载原理和使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、@Lazy延迟加载原理1.延迟加载原理1.1 @Lazy三种配置方法1.2 @Component