將 PEAR 放進 CodeIgniter

這個做法是參考此篇「Using Zend Framework with CodeIgniter」修改而來的。

事實上外掛Zend的需要性可能比PEAR還要高,我之所以要外掛PEAR來做是因為CI的分頁類好像有問題@_@,索性就直接使用PEAR的分頁類了,而且PEAR的分頁類還有Jumping和Sliding不同模式可選用,在某些情況下,PEAR的彈性可能比較高。however...看你喜不喜歡多掛一個做同樣事情的library而已。

一、下載PEAR函式庫必要的「PEAR核心檔」即可,然後再下載所需的類別套件,以我為例就是「Pager套件」,最終的資料夾結構大概長這樣


二、將PEAR放到你的applicaiton/libraries/中,在application/libraries/中建立一個新檔,並命名為PEAR.php的類別檔(注意與applicaiton/libraries/PEAR底下的PEAR.php是不一樣的,不要混淆了),內容如下:


if (!defined('BASEPATH')) {exit('No direct script access allowed');}
class CI_PEAR
{
/**
* Constructor
*
* @param	string $class class name
*/
function __construct($class = NULL)
{
// include path for PEAR library
// alter it accordingly if you have put the 'PEAR' folder elsewhere
ini_set('include_path',
ini_get('include_path') . PATH_SEPARATOR . APPPATH . 'libraries/PEAR');

if ($class)
{
require_once (string) $class . EXT;
log_message('debug', "PEAR Class $class Loaded");
}
else
{
log_message('debug', "PEAR Class Initialized");
}
}

/**
* PEAR Class Loader
*
* @param	string $class class name
*/
function load($class)
{
require_once (string) $class . EXT;
log_message('debug', "PEAR Class $class Loaded");
}
}

三、在controllers中,你就可以這樣的使用


//注意,不必加上最後的.php
$this->pear->load('PEAR/Pager/Pager');
//設定分頁參數
$params = array(
'mode'       => 'Jumping',
'perPage'    => 3,
'delta'      => 2,
'itemData'   => array('a','b','c','d','e',[...omissis...],'z')
);
$pager = Pager::factory($params);
$data  = $pager->getPageData();
$links = $pager->getLinks();

2 Responses to “將 PEAR 放進 CodeIgniter”

  1. 【转】將 PEAR 放進 CodeIgniter « LEMON’s BLOG - 黎明博客 - 十二月 24, 2008

    [...] 將 PEAR 放進 CodeIgniter這個做法是參考此篇「Using Zend Framework with CodeIgniter」修改而來的。 事實上外掛Zend的需要性可能比PEAR還要高,我之所以要外掛PEAR來做是因為CI的分頁類好像有問題@_@,索性就直接使用PEAR的分頁類了,而且PEAR的分頁類還有Jumping和Sliding不同模式可選用,在某些情況下,PEAR的彈性可能比較高。however…看你喜不喜歡多掛一個做同樣事情的library而已。 一、下載PEAR函式庫必要的「PEAR核心檔」即可,然後再下載所需的類別套件,以我為例就是「Pager套件」,最終的資料夾結構大概長這樣 [...]

  2. [網站] 好站連結(一) | 小惡魔 - 電腦技術 - 生活日記 - 美食介紹 - AppleBOY - 五月 6, 2009

    [...] 將 PEAR 放進 CodeIgniter [...]

回應(Leave a Reply)