天天看點

【PHP架構CodeIgniter學習】使用輔助函數—建立自己的JSONHelper

本文使用的是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這種詭異的想象,那麼我們想要的目的是輸出中文,是以就寫一個輔助函數來自己調用;

内容:

<code>&lt;?php</code>

<code>function</code> <code>mJson_encode(</code><code>$jsonArray</code><code>)</code>

<code>{</code>

<code>    </code><code>$newArray</code> <code>= </code><code>array</code><code>();</code>

<code>    </code><code>// encode</code>

<code>    </code><code>for</code><code>(</code><code>$i</code> <code>= 0;</code><code>$i</code> <code>&lt; </code><code>count</code><code>(</code><code>$jsonArray</code><code>);</code><code>$i</code><code>++)</code>

<code>    </code><code>{</code>

<code>        </code><code>$jsonObject</code> <code>= </code><code>$jsonArray</code><code>[</code><code>$i</code><code>];</code>

<code>        </code><code>foreach</code><code>(</code><code>$jsonObject</code> <code>as</code> <code>$key</code> <code>=&gt; </code><code>$value</code><code>)</code>

<code>        </code><code>{</code>

<code>            </code><code>$newObject</code><code>[</code><code>$key</code><code>] = urlencode (</code><code>$value</code><code>);</code>

<code>        </code><code>}</code>

<code>        </code><code>array_push</code><code>(</code><code>$newArray</code> <code>, </code><code>$newObject</code><code>);</code>

<code>    </code><code>}</code>

<code>    </code><code>// decode</code>

<code>    </code><code>return</code> <code>urldecode (json_encode (</code><code>$newArray</code><code>));</code>

<code>}</code>

<code>?&gt;</code>

三、如何調用建立的輔助函數;

在需要調用的controller裡面,加載json_helper輔助函數,$this-&gt;load-&gt;helper(‘json’);

然後按照正常調用PHP自帶函數的方式調用即可。

如:

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

完整測試代碼:

<code>class</code> <code>UserController </code><code>extends</code> <code>CI_Controller</code>

<code>    </code><code>public</code> <code>function</code> <code>__construct()</code>

<code>        </code><code>parent::__construct();</code>

<code>        </code><code>$this</code><code>-&gt;load-&gt;helper(</code><code>'json'</code><code>);</code>

<code>        </code><code>$this</code><code>-&gt;output-&gt;set_content_type(</code><code>'application/html;charset=utf-8'</code><code>);</code>

<code>    </code><code>function</code> <code>index()</code>

<code>        </code><code>$this</code><code>-&gt;load-&gt;model(</code><code>'user_model'</code><code>);</code>

<code>        </code><code>$data</code><code>[</code><code>'result'</code><code>] = </code><code>$this</code><code>-&gt;user_model-&gt;get_last_ten_entries();</code>

<code>        </code><code>$data</code><code>[</code><code>'title'</code><code>] = </code><code>'Hello World Page Title'</code><code>;</code>

<code>        </code><code>$this</code><code>-&gt;load-&gt;view(</code><code>'user_view'</code><code>, </code><code>$data</code><code>);</code>

<code>    </code><code>function</code> <code>toJson()</code>

<code>        </code><code>$rs</code> <code>= mJson_encode(</code><code>$data</code><code>[</code><code>'result'</code><code>]);</code>

<code>        </code><code>echo</code> <code>$rs</code><code>;</code>

版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。

如何聯系我:【萬裡虎】www.bravetiger.cn

【QQ】3396726884 (咨詢問題100元起,幫助解決問題500元起)

【部落格】http://www.cnblogs.com/kenshinobiy/