日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

codeigniter中创建自己的类库

發布時間:2023/12/20 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 codeigniter中创建自己的类库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

當我們使用術語"類庫"時,我們一般指的是位于libraries?文件夾中的類,它們在wiki的"類庫參考"這個板塊被討論.在當前這個話題中,我們將討論如何在?application/libraries?文件夾中建立你自己的類庫,并使它們與全框架的資源維持分離.

作為一個額外的功能,當你需要在原始類中簡單地添加一些功能時,CodeIgniter能使你的類庫extend?自原始類.你甚至可以通過在application/libraries文件夾下安放同名類庫文件的方法來完全替換原始類.

總之:

  • 你可以創建全新的類庫.
  • 你可以擴展原始類庫.
  • 你可以替換原始類庫.

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

注意:?除了數據庫類無法被擴展或替換,剩余其他類均可。

建立你的類庫文件

你的類庫文件必須保存在?application/libraries?文件夾,CodeIgniter將在這個文件夾中尋找并初始化它們.

命名約定

  • 文件名首字母大寫. 例如:??Myclass.php
  • 類聲明首字母大寫. 例如:??class Myclass
  • 類的名字和文件名應符合.

類文件

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

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');?

class Someclass {

????public function some_function()
????{
????}
}

/* 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 {

????public function __construct($params)
????{
????????// Do something with $params
????}
}

?>

你也可以傳遞存于配置文件中的參數.你只需簡單的建立一個與?類文件名相同的config文件,并保存在?application/config/?文件夾中.注意當你通過上文所述的方式動態傳遞參數時,config文件中的選項將不起作用.

在你自定義的類庫中初始化CodeIgniter資源

要你自定義的類庫中訪問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 對象,而不是創建一個副本。

用你自己的類替換原始類

簡單的將你自己的類命名為與原始類一樣就能使CodeIgniter使用這個新類.要使用這個特性,文件名與類聲明必須與原始類完全一致。例如,要替換原始的?Email?類庫。你必須創建一個文件application/libraries/Email.php, 并按如下方式聲明類:

class CI_Email {

}

注意大多數原始類以CI_為前綴.

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

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

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

擴展現有類

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

  • 擴展的類必須申明由母類擴展而來.
  • 新擴展的類所在的文件必須以?MY_?為前綴(這個選項是可配置的,下面有說明).

例如,要擴展原始類?Email?類你要建立文件?application/libraries/MY_Email.php, 并按如下方式在文件中聲明:

class MY_Email extends CI_Email {

}

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

class MY_Email extends CI_Email {

????public function __construct()
????{
????????parent::__construct();
????}
}

載入你的子類

要載入擴展子類,你應該使用標準字符名. 請不要使用前綴. 例如,要載入上文說過的email擴展子類,你應該這樣寫:

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

擴展子類一旦被載入,就能像一般的類一樣使用它們. Email類中的所有函數就能被調用:

$this->email->some_function();

設定自定義前綴

要設定你自己的子類前綴,請打開?application/config/config.php?文件并找到這一項:

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

注意所有原始CodeIgniter類庫以?CI_?作為前綴,所以請勿以CI_作為你自己的前綴.

轉載于:https://my.oschina.net/mickelfeng/blog/130800

總結

以上是生活随笔為你收集整理的codeigniter中创建自己的类库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。