CI中建立你自己的類庫

2021-09-06 21:49:08 字數 2526 閱讀 1925

總之: 以下頁面將深入介紹這三個概念.

注意:除了資料庫類無法被擴充套件或替換,剩餘其他類均可。

所有的類應有基礎原型(注意,這裡我們以 someclass 這個名字為例):

<?php if (!defined('basepath')) exit('no direct script access allowed'); 

class someclass

}/* end of file someclass.php */

在所有的controller 函式中,你可以用以下的標準方式初始化你的類:

$this->load->library('someclass');

當 someclass 是檔名時,不用加上".php"副檔名.這裡名字不分大小寫.

一旦你自定義的類載入完畢,你可以通過以下方式呼叫類,注意使用 小寫 的名字:

$this->someclass->some_function();  // 物件的例項名永遠都是小寫的

當初始化類庫時,你可以通過第二個引數動態的傳遞陣列到類的建構函式中去:

$params = array('type' => 'large', 'color' => 'red');

$this->load->library('someclass', $params);

當你使用這個特性時,你必須為類的建構函式加上引數:

<?php if (!defined('basepath')) exit('no direct script access allowed');

class someclass

}?>

要在你自定義的類庫中訪問codeigniter的原始資源,你必須使用 get_instance() 函式.這個函式返回乙個codeigniter super object.

一般來說在你的控制器函式中你可以通過 $this 呼叫任何可用的codeigniter函式:

$this->load->helper('url');

$this->load->library('session');

$this->config->item('base_url');

//etc.

$this, 只直接作用在你自己的控制器,模型和檢視中.當你在自定義類中想使用codeigniter原始類時,你可以這樣做:

首先,定義codeigniter物件賦給乙個變數:

$ci =& get_instance();

一旦定義某個物件為乙個變數,你就可以使用那個變數名 取代

$this:

$ci =& get_instance();

$ci->load->helper('url');

$ci->load->library('session');

$ci->config->item('base_url');

//etc.

注意:你將注意到get_instance()這個函式通過被引用的方式被傳遞:

$ci =& get_instance();

這十分重要. 通過引用的方式賦給變數將使用原始的 codeigniter 物件,而不是建立乙個副本。

class ci_email

注意大多數原始類以ci_為字首.

你可以只用標準載入函式來載入你自己的類:

$this->load->library('email');

注意:這個時候database無法替換為你自定義的類.

如果你需要在現有類庫中加入一兩個新的功能,那就完全不必要替換整個類庫檔案.你只需簡單地擴充套件(繼承)現有的類,擴充套件乙個類就像在類中增加一些例外:

my_email.php, 並按如下方式在檔案中宣告:

class my_email extends ci_email

注意:如果你需要在類中使用建構函式,你必須在建構函式中顯式繼承父類建構函式:

class my_email extends ci_email

}

要載入擴充套件子類,你應該使用標準字元名. 請不要使用字首. 例如,要載入上文說過的email擴充套件子類,你應該這樣寫:

$this->load->library('email');

擴充套件子類一旦被載入,就能像一般的類一樣使用它們. email類中的所有函式就能被呼叫:

$this->email->some_function();

$config['subclass_prefix'] = 'my_';

注意所有原始codeigniter類庫以 ci_ 作為字首,所以請勿以ci_作為你自己的字首.

CI中建立你自己的類庫

總之 以下頁面將深入介紹這三個概念.注意 除了資料庫類無法被擴充套件或替換,剩餘其他類均可。所有的類應有基礎原型 注意,這裡我們以 someclass 這個名字為例 class someclass end of file someclass.php 在所有的controller 函式中,你可以用以下...

CI的captcha替代類庫

ci的captcha使用起來不是特別好用,可以用這個替代類庫 class captcha function showimg function getcaptcha private function createimg private function setdisturb 加入弧線 for i 0 ...

CI框架實現建立自定義類庫的方法

當我們使用 類庫 這個詞的時候,通常我們指的是位於 libraries 這個目錄下的那些類。接下來我們將介紹 如何在 application l程式設計客棧ibraries 目錄下建立你自己的類庫,和全域性的框架類庫獨立開來。另外,如果你希望在現有的類庫中新增某些額外功能,codeigniter 允...