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

相关文章

Docker集成CI/CD的项目实践

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

Rust中的Option枚举快速入门教程

《Rust中的Option枚举快速入门教程》Rust中的Option枚举用于表示可能不存在的值,提供了多种方法来处理这些值,避免了空指针异常,文章介绍了Option的定义、常见方法、使用场景以及注意事... 目录引言Option介绍Option的常见方法Option使用场景场景一:函数返回可能不存在的值场景

MyBatis框架实现一个简单的数据查询操作

《MyBatis框架实现一个简单的数据查询操作》本文介绍了MyBatis框架下进行数据查询操作的详细步骤,括创建实体类、编写SQL标签、配置Mapper、开启驼峰命名映射以及执行SQL语句等,感兴趣的... 基于在前面几章我们已经学习了对MyBATis进行环境配置,并利用SqlSessionFactory核

cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?

跨平台系列 cross-plateform 跨平台应用程序-01-概览 cross-plateform 跨平台应用程序-02-有哪些主流技术栈? cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个? cross-plateform 跨平台应用程序-04-React Native 介绍 cross-plateform 跨平台应用程序-05-Flutte

Spring框架5 - 容器的扩展功能 (ApplicationContext)

private static ApplicationContext applicationContext;static {applicationContext = new ClassPathXmlApplicationContext("bean.xml");} BeanFactory的功能扩展类ApplicationContext进行深度的分析。ApplicationConext与 BeanF

数据治理框架-ISO数据治理标准

引言 "数据治理"并不是一个新的概念,国内外有很多组织专注于数据治理理论和实践的研究。目前国际上,主要的数据治理框架有ISO数据治理标准、GDI数据治理框架、DAMA数据治理管理框架等。 ISO数据治理标准 改标准阐述了数据治理的标准、基本原则和数据治理模型,是一套完整的数据治理方法论。 ISO/IEC 38505标准的数据治理方法论的核心内容如下: 数据治理的目标:促进组织高效、合理地

如何使用Ansible实现CI/CD流水线的自动化

如何使用Ansible实现CI/CD流水线的自动化 持续集成(CI)和持续交付(CD)是现代软件开发过程中的核心实践,它们帮助团队更快地交付高质量的软件。Ansible,作为一个强大的自动化工具,可以在CI/CD流水线中发挥关键作用。本文将详细介绍如何使用Ansible实现CI/CD流水线的自动化,包括设计流水线的结构、配置管理、自动化测试、部署、以及集成Ansible与CI/CD工具(如Jen

ZooKeeper 中的 Curator 框架解析

Apache ZooKeeper 是一个为分布式应用提供一致性服务的软件。它提供了诸如配置管理、分布式同步、组服务等功能。在使用 ZooKeeper 时,Curator 是一个非常流行的客户端库,它简化了 ZooKeeper 的使用,提供了高级的抽象和丰富的工具。本文将详细介绍 Curator 框架,包括它的设计哲学、核心组件以及如何使用 Curator 来简化 ZooKeeper 的操作。 1

【Kubernetes】K8s 的安全框架和用户认证

K8s 的安全框架和用户认证 1.Kubernetes 的安全框架1.1 认证:Authentication1.2 鉴权:Authorization1.3 准入控制:Admission Control 2.Kubernetes 的用户认证2.1 Kubernetes 的用户认证方式2.2 配置 Kubernetes 集群使用密码认证 Kubernetes 作为一个分布式的虚拟

Spring Framework系统框架

序号表示的是学习顺序 IoC(控制反转)/DI(依赖注入): ioc:思想上是控制反转,spring提供了一个容器,称为IOC容器,用它来充当IOC思想中的外部。 我的理解就是spring把这些对象集中管理,放在容器中,这个容器就叫Ioc这些对象统称为Bean 用对象的时候不用new,直接外部提供(bean) 当外部的对象有关系的时候,IOC给它俩绑好(DI) DI和IO