本文使用的是2.1.4版本,看的时候请注意。

官方文档:http://codeigniter.org.cn/user_guide/general/helpers.html(关于辅助函数Helper的使用)

一、辅助函数是什么

        辅助函数,顾名思义,是帮助我们完成特定任务的函数。每个辅助函数文件仅仅是一些函数的集合。例如,URL Helpers 可以帮助我们创建链接,Form Helpers 可以帮助我们创建表单,Text Helpers 提供一系列的格式化输出方式,Cookie Helpers 能帮助我们设置和读取COOKIE, File Helpers能帮助我们处理文件,等等。

二、怎么新建辅助函数

打开application\helpers目录,新建json_helper.php;

因为PHP自带的json_encode 对中文的封装不是很好,会出现\u5c3c\u739b这种诡异的想象,那么我们想要的目的是输出中文,所以就写一个辅助函数来自己调用;

内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
function mJson_encode($jsonArray)
{
    $newArray array();
    // encode
    for($i = 0;$i count($jsonArray);$i++)
    {
        $jsonObject $jsonArray[$i];
 
        foreach($jsonObject as $key => $value)
        {
            $newObject[$key] = urlencode ($value);
        }
        array_push($newArray $newObject);
    }
    // decode
    return urldecode (json_encode ($newArray));
}
?>

三、如何调用新建的辅助函数;

在需要调用的controller里面,加载json_helper辅助函数,$this->load->helper(‘json’);
然后按照正常调用PHP自带函数的方式调用即可。

如:

$rs = mJson_encode($data['result']);

完整测试代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
class UserController extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();
        $this->load->helper('json');
        $this->output->set_content_type('application/html;charset=utf-8');
    }
    function index()
    {
        $this->load->model('user_model');
        $data['result'] = $this->user_model->get_last_ten_entries();
        $data['title'] = 'Hello World Page Title';
        $this->load->view('user_view'$data);
    }
    function toJson()
    {
        $this->load->model('user_model');
        $data['result'] = $this->user_model->get_last_ten_entries();
        $data['title'] = 'Hello World Page Title';
        $rs = mJson_encode($data['result']);
        echo $rs;
    }
 
}
 
?>

版权声明:本文为博主原创文章,未经博主允许不得转载。

【PHP框架CodeIgniter学习】使用辅助函数—建立自己的JSONHelper的更多相关文章

  1. php优秀框架codeigniter学习系列——common.php

    文件位于system/core/common.php,是框架核心文件. 该文件中定义了一系列的函数,都是框架运行中经常需要用到的.下面逐一介绍. is_php /** * Determines if ...

  2. php优秀框架codeigniter学习系列——hooks

    这篇文章学习CI框架的钩子特性. hooks是CI框架提供的一种机制,允许你在程序框架运行流程的某个阶段执行你自己的一些代码.比如系统运行前,CI_Controller调用前,系统运行结束后等特定的时 ...

  3. php优秀框架codeigniter学习系列——CodeIgniter.php概览

    CodeIgniter.php是CI框架的核心文件.它在前端控制器index.php之后运行,加载各类基础组件,执行请求.文件执行完成后,这次请求也就结束了.所以,该文只能对CodeIgniter.p ...

  4. php优秀框架codeigniter学习系列——index.php

    程序流程图 先来看看CI框架运行的程序流程图. 从图中我们 看到,index.php作为唯一的入口文件,会初始化CI框架运行所需的基本资源. 路由器(Routing)会根据http请求,确定如何处理: ...

  5. php优秀框架codeigniter学习系列——前言

    php的框架众多,笔者用过的包括thinkphp,CI,smarty,laravel,也用过一些公司自己开发的框架. thinkphp是国人自己开发的,我大概用过一段时间,基本功能都还好,应该也还比较 ...

  6. php优秀框架codeigniter学习系列——CI_Security类学习

    这篇文章主要介绍CI核心框架工具类CI_Security. 安全类包含了一些方法,用于安全的处理输入数据,帮助你创建一个安全的应用.以下选取类中的重点方法进行说明. __construct() 在构造 ...

  7. php优秀框架codeigniter学习系列——CI_Router类学习

    这篇文章主要介绍CI核心框架工具类CI_Router. 如果说CI_URI类是用来解析URI,那么CI_Router类就应该是根据解析出来的URI来决定究竟访问哪一个文件和哪一个function. 详 ...

  8. php优秀框架codeigniter学习系列——CI_URI类学习

    这篇文章主要介绍CI核心框架工具类CI_URI. 该类主要用来解析uri和决定路由的.关于URI和URL的关系请参考这位朋友的文章.简单来说URI是唯一定位的资源,URL是唯一资源的一个网络可能访问路 ...

  9. php优秀框架codeigniter学习系列——异常和错误处理机制

    这篇介绍下CI框架的异常和错误处理机制. 在入口文件index.php中,根据设置的环境参数设置error_reporting的范围,和是否显示错误. 在CI初始化程序CodeIgniter.php中 ...

随机推荐

  1. Java的基础概念

    JDK (Java Development Kit) Java Developer Kit contains tools needed to develop the Java programs, an ...

  2. Merge Into For Update Example

    Merge Into article aa Using ( SELECT md5_id, Min(article_id) as Min_Article_ID from article )) and s ...

  3. JavaScript学习笔记(1)——JavaScript简介

          JavaScript一种解释性脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,该引擎为浏览器的一部分.JavaScript最早是用 ...

  4. 三栏布局的n种实现

    本文主要讨论左右边栏固定宽度,中间栏填满其余空间的布局.至于其他类型,基本上也就是半斤和八两.每一种布局都会有个Demo,个人依然认为文章里帖代码并没有Demo来的直接.所以正文负责解释,源码参见De ...

  5. Java多线程间通信-解决安全问题、等待唤醒机制

    /*1.增加一个知识点一个类怎么在所有的类中,让其它类来共同修改它的数据呢?可以用单例设计模式可以用静态可以在其它类中做一个构造函数,接受同一个对象,这样就可以实现对象 2.状态选择可以用数字0 1 ...

  6. [leetcode] 398. Random Pick Index

    我是链接 看到这道题,想到做的几道什么洗牌的题,感觉自己不是很熟,但也就是rand()函数的调用,刚开始用map<int, vector<int >>来做,tle,后来就想着直 ...

  7. spring常用的连接池属性文件配置

    (一) DBCP 引入jar文件 commons-dbcp-1.2.1.jar commons-pool-1.3.jar二个包. spring配置文件 <bean id="dataSo ...

  8. PHPstrom 增加emmet插件

    之前记得使用Eclipse的时候有一个插件叫 emmet 可以实现快速开发前端,简直就是前端开发秒杀神器: 输入对应的代码一个table键就搞定了一堆代码: 在emmet的官网上 看到其实是支持的PH ...

  9. HDOJ(1000) A + B Problem

    代码如下: #include <stdio.h> int main(void) { int a, b; ){ printf("%d\n", a+b); } ; }

  10. RX学习笔记:FreeCodeCamp的JavaScript基本算法挑战

    FreeCodeCamp的JavaScript基本算法挑战 https://www.freecodecamp.com 2016-07-03 JavaScript还不是非常熟悉,用已经会的知识来解这些题 ...