?
This document uses PHP Chinese website manual Release
正如名字所暗示的,Loader用于加載元素。這些元素可以是庫(kù)(類(lèi))查看文件,驅(qū)動(dòng)程序,助手,模型或您自己的文件。
注意
該類(lèi)由系統(tǒng)自動(dòng)初始化,因此不需要手動(dòng)執(zhí)行。
應(yīng)用程序“包”
包視圖文件
類(lèi)參考
應(yīng)用程序包允許在單個(gè)目錄中輕松分發(fā)完整的資源集,并配有自己的庫(kù),模型,幫助程序,配置和語(yǔ)言文件。建議將這些軟件包放在application / third_party目錄中。以下是一個(gè)軟件包目錄的示例地圖。
以下是名為“Foo Bar”的應(yīng)用程序包的目錄示例。
/application/third_party/foo_bar config/helpers/language/libraries/models/
無(wú)論“Foo Bar”應(yīng)用程序包的用途如何,它都有自己的配置文件,幫助程序,語(yǔ)言文件,庫(kù)和模型。要在您的控制器中使用這些資源,您首先需要通過(guò)通過(guò)add_package_path()
方法添加包路徑來(lái)告訴Loader您將要從包中加載資源。
默認(rèn)情況下,包視圖文件路徑在add_package_path()
被調(diào)用時(shí)設(shè)置。視圖路徑循環(huán)遍歷,并且一旦遇到該視圖加載的匹配。
在這種情況下,可能會(huì)發(fā)生命名包內(nèi)的沖突,并且可能會(huì)加載不正確的包。為了確保這一點(diǎn),請(qǐng)?jiān)谡{(diào)用時(shí)設(shè)置可選的第二個(gè)參數(shù)FALSE add_package_path()
。
$this->load->add_package_path(APPPATH.'my_app', FALSE);$this->load->view('my_app_index'); // Loads$this->load->view('welcome_message'); // Will not load the default welcome_message b/c the second param to add_package_path is FALSE// Reset things$this->load->remove_package_path(APPPATH.'my_app');// Again without the second parameter:$this->load->add_package_path(APPPATH.'my_app');$this->load->view('my_app_index'); // Loads$this->load->view('welcome_message'); // Loads
class CI_Loaderlibrary($library[, $params = NULL[, $object_name = NULL]])
參數(shù): | $ library(mixed) - 庫(kù)名稱(chēng)作為一個(gè)字符串或一個(gè)包含多個(gè)庫(kù)的數(shù)組$ params(array) - 可選參數(shù)數(shù)組傳遞給加載庫(kù)的構(gòu)造函數(shù)$ object_name(string) - 可選對(duì)象名稱(chēng), |
---|---|
返回: | CI_Loader實(shí)例(方法鏈接) |
返回類(lèi)型: | CI_Loader |
$庫(kù)(混合) - 庫(kù)名稱(chēng)作為字符串或具有多個(gè)庫(kù)的數(shù)組
$ params(array) - 可選參數(shù)數(shù)組傳遞給加載的庫(kù)的構(gòu)造函數(shù)
$ object_name(string) - 將庫(kù)分配給的可選對(duì)象名稱(chēng)
Returns: CI\_Loader instance (method chaining)
Return type: CI\_Loader
This method is used to load core classes.
注意
我們可以互換地使用術(shù)語(yǔ)“類(lèi)”和“庫(kù)”。
例如,如果您想用CodeIgniter發(fā)送電子郵件,第一步是在您的控制器中加載電子郵件類(lèi):
$this->load->library('email');
一旦加載,庫(kù)將準(zhǔn)備好使用,使用$this->email
。
庫(kù)文件可以存儲(chǔ)在主“庫(kù)”目錄的子目錄中,也可以存儲(chǔ)在個(gè)人應(yīng)用程序/庫(kù)目錄中。要加載位于子目錄中的文件,只需包含相對(duì)于“庫(kù)”目錄的路徑。例如,如果您的文件位于:
libraries/flavors/Chocolate.php
您將使用以下方式加載它:
$this->load->library('flavors/chocolate');
您可以根據(jù)需要將文件嵌套在多個(gè)子目錄中。
此外,可以通過(guò)將一系列庫(kù)傳遞給加載方法來(lái)同時(shí)加載多個(gè)庫(kù)。
$this->load->library(array('email', 'table'));
設(shè)置選項(xiàng)
第二個(gè)(可選)參數(shù)允許您選擇性地通過(guò)配置設(shè)置。您通常會(huì)將這些數(shù)據(jù)作為數(shù)組傳遞:
$config = array ( 'mailtype' => 'html', 'charset' => 'utf-8, 'priority' => '1' ); $this->load->library('email', $config);
配置選項(xiàng)通常也可以通過(guò)配置文件來(lái)設(shè)置。每個(gè)圖書(shū)館都在其自己的頁(yè)面中進(jìn)行了詳細(xì)說(shuō)明,因此請(qǐng)閱讀您想要使用的每個(gè)圖書(shū)館的信息。
請(qǐng)注意,當(dāng)為陣列中的第一個(gè)參數(shù)提供多個(gè)庫(kù)時(shí),每個(gè)庫(kù)都會(huì)收到相同的參數(shù)信息。
將庫(kù)分配給不同的對(duì)象名稱(chēng)
如果第三個(gè)(可選)參數(shù)為空,則通常將庫(kù)分配給與庫(kù)具有相同名稱(chēng)的對(duì)象。例如,如果該庫(kù)名為Calendar,則它將被分配給一個(gè)名為的變量$this->calendar
。
如果您更喜歡設(shè)置自己的類(lèi)名,則可以將其值傳遞給第三個(gè)參數(shù):
$this->load->library('calendar', NULL, 'my_calendar'); // Calendar class is now accessed using: $this->my_calendar
請(qǐng)注意,如果在數(shù)組中為第一個(gè)參數(shù)提供了多個(gè)庫(kù),則會(huì)放棄此參數(shù)。
driver($library[, $params = NULL[, $object_name]])
參數(shù): | $ library(mixed) - 庫(kù)名稱(chēng)作為一個(gè)字符串或一個(gè)包含多個(gè)庫(kù)的數(shù)組$ params(array) - 可選參數(shù)數(shù)組傳遞給加載庫(kù)的構(gòu)造函數(shù)$ object_name(string) - 可選對(duì)象名稱(chēng), |
---|---|
返回: | CI_Loader實(shí)例(方法鏈接) |
返回類(lèi)型: | CI_Loader |
$庫(kù)(混合) - 庫(kù)名稱(chēng)作為字符串或具有多個(gè)庫(kù)的數(shù)組
$ params(array) - 可選參數(shù)數(shù)組傳遞給加載的庫(kù)的構(gòu)造函數(shù)
$ object_name(string) - 將庫(kù)分配給的可選對(duì)象名稱(chēng)
Returns: CI\_Loader instance (method chaining)
Return type: CI\_Loader
該方法用于加載驅(qū)動(dòng)程序庫(kù),非常像`library()`方法。
例如,如果您想使用CodeIgniter會(huì)話,第一步是在您的控制器中加載會(huì)話驅(qū)動(dòng)程序:
$this->load->driver('session');
一旦加載,庫(kù)將準(zhǔn)備好使用,使用$this->session
。
驅(qū)動(dòng)程序文件必須存儲(chǔ)在主“庫(kù)”目錄的子目錄中,或存儲(chǔ)在個(gè)人應(yīng)用程序/庫(kù)目錄中。該子目錄必須與父類(lèi)名稱(chēng)匹配。詳細(xì)信息請(qǐng)閱讀驅(qū)動(dòng)程序描述。
此外,可以通過(guò)將一組驅(qū)動(dòng)程序傳遞給加載方法來(lái)同時(shí)加載多個(gè)驅(qū)動(dòng)程序庫(kù)。
$this->load->driver(array('session', 'cache'));
設(shè)置選項(xiàng)
第二個(gè)(可選)參數(shù)允許您可選地傳遞配置設(shè)置。您通常會(huì)將這些數(shù)據(jù)作為數(shù)組傳遞:
$config = array( 'sess_driver' => 'cookie', 'sess_encrypt_cookie' => true, 'encryption_key' => 'mysecretkey' ); $this->load->driver('session', $config);
配置選項(xiàng)通常也可以通過(guò)配置文件來(lái)設(shè)置。每個(gè)圖書(shū)館都在其自己的頁(yè)面中進(jìn)行了詳細(xì)說(shuō)明,因此請(qǐng)閱讀您想要使用的每個(gè)圖書(shū)館的信息。
將驅(qū)動(dòng)程序分配給不同的對(duì)象名稱(chēng)
如果第三個(gè)(可選)參數(shù)為空,則該庫(kù)將被分配給與父類(lèi)相同名稱(chēng)的對(duì)象。例如,如果該庫(kù)名為Session,則它將被分配給一個(gè)名為的變量$this->session
。
如果您更喜歡設(shè)置自己的類(lèi)名,則可以將其值傳遞給第三個(gè)參數(shù):
$this->load->library('session', '', 'my_session'); // Session class is now accessed using: $this->my_session
view($view[, $vars = array()[, return = FALSE]])
參數(shù): | $ view(string) - 查看名稱(chēng)$ vars(array) - 一個(gè)變量的關(guān)聯(lián)數(shù)組$ return(bool) - 是否返回加載的視圖 |
---|---|
返回: | 如果$ return設(shè)置為T(mén)RUE,則查看內(nèi)容字符串,否則CI_Loader實(shí)例(方法鏈接) |
返回類(lèi)型: | 雜 |
$ view(string) - 查看名稱(chēng)
$ vars(array) - 一個(gè)變量的關(guān)聯(lián)數(shù)組
$ return(bool) - 是否返回加載的視圖
返回:如果$ return設(shè)置為T(mén)RUE,則查看內(nèi)容字符串,否則CI \ _Loader實(shí)例(方法鏈接)
Return type: mixed
此方法用于加載您的視圖文件。如果您還沒(méi)有閱讀用戶(hù)指南的[Views](../ general / views)部分,建議您這樣做,因?yàn)樗鼤?huì)告訴您如何使用此方法。
第一個(gè)參數(shù)是必需的。這是您想要加載的視圖文件的名稱(chēng)。
注意
.php文件擴(kuò)展名不需要指定,除非您使用.php以外的內(nèi)容。
第二個(gè)可選參數(shù)可以將關(guān)聯(lián)數(shù)組或?qū)ο笞鳛檩斎耄ㄟ^(guò)PHP extract()函數(shù)運(yùn)行以轉(zhuǎn)換為可用于視圖文件的變量。再次閱讀Views頁(yè)面以了解這可能是有用的。
第三個(gè)可選參數(shù)允許您更改方法的行為,以便將數(shù)據(jù)作為字符串返回,而不是將其發(fā)送到瀏覽器。如果您想以某種方式處理數(shù)據(jù),這可能很有用。如果將該參數(shù)設(shè)置為T(mén)RUE(布爾值),它將返回?cái)?shù)據(jù)。默認(rèn)行為是FALSE,將其發(fā)送到您的瀏覽器。如果你想返回?cái)?shù)據(jù),記得把它分配給一個(gè)變量:
$string = $this->load->view('myfile', '', TRUE);
vars($vars[, $val = ''])
參數(shù): | $ vars(混合) - 一個(gè)變量數(shù)組或單個(gè)變量名稱(chēng)$ val(混合) - 可選變量值 |
---|---|
返回: | CI_Loader實(shí)例(方法鏈接) |
返回類(lèi)型: | CI_Loader |
$ vars(混合) - 一個(gè)變量數(shù)組或單個(gè)變量名稱(chēng)
$ val(混合) - 可選變量值
Returns: CI\_Loader instance (method chaining)
Return type: CI\_Loader
此方法將關(guān)聯(lián)數(shù)組作為輸入并使用PHP [extract()](https://php.net/extract)函數(shù)生成變量。該方法產(chǎn)生與使用上面的`$ this-> load-> view()`方法的第二個(gè)參數(shù)相同的結(jié)果。你可能想獨(dú)立使用這個(gè)方法的原因是,如果你想在你的控制器的構(gòu)造函數(shù)中設(shè)置一些全局變量,并讓它們?cè)谌魏螐娜魏畏椒虞d的視圖文件中變得可用。您可以對(duì)此方法進(jìn)行多次調(diào)用。數(shù)據(jù)被緩存并合并到一個(gè)數(shù)組中以轉(zhuǎn)換為變量。
get_var($key)
參數(shù): | $ key(字符串) - 變量名稱(chēng)鍵 |
---|---|
返回: | 如果找到鍵值,則返回NULL,否則返回NULL |
返回類(lèi)型: | 雜 |
$ key(字符串) - 變量名稱(chēng)鍵
Returns: Value if key is found, NULL if not
Return type: mixed
該方法檢查可用于視圖的變量的關(guān)聯(lián)數(shù)組。如果出于某種原因在庫(kù)或另一個(gè)使用`$ this-> load-> vars()`的控制器方法中設(shè)置了var,這將非常有用。
get_vars()
返回: | 所有分配的視圖變量的數(shù)組 |
---|---|
返回類(lèi)型: | 排列 |
clear_vars()
返回: | CI_Loader實(shí)例(方法鏈接) |
---|---|
返回類(lèi)型: | CI_Loader |
model($model[, $name = ''[, $db_conn = FALSE]])
參數(shù): | $ model(mixed) - 模型名稱(chēng)或包含多個(gè)模型的數(shù)組$ name(string) - 將模型分配給$ db_conn(string)的可選對(duì)象名稱(chēng) - 要加載的可選數(shù)據(jù)庫(kù)配置組 |
---|---|
返回: | CI_Loader實(shí)例(方法鏈接) |
返回類(lèi)型: | CI_Loader |
$ model(mixed) - 模型名稱(chēng)或包含多個(gè)模型的數(shù)組
$ name(字符串) - 將模型分配給的可選對(duì)象名稱(chēng)
$ db_conn(字符串) - 要加載的可選數(shù)據(jù)庫(kù)配置組
Returns: CI\_Loader instance (method chaining)
Return type: CI\_Loader
$this->load->model('model\_name');
如果您的模型位于子目錄中,請(qǐng)包含模型目錄中的相對(duì)路徑。例如,如果您的模型位于application / models / blog / Queries.php中,您將使用以下命令加載模型:
$this->load->model('blog/queries');
如果您希望將模型分配給不同的對(duì)象名稱(chēng),則可以通過(guò)加載方法的第二個(gè)參數(shù)指定它:
$this->load->model('model_name', 'fubar'); $this->fubar->method();
database([$params = ''[, $return = FALSE[, $query_builder = NULL]]])
參數(shù): | $ params(mixed) - 數(shù)據(jù)庫(kù)組名或配置選項(xiàng)$ return(bool) - 是否返回加載的數(shù)據(jù)庫(kù)對(duì)象$ query_builder(bool) - 是否加載查詢(xún)生成器 |
---|---|
返回: | 如果$ return設(shè)置為T(mén)RUE,則加載CI_DB實(shí)例或FALSE失敗,否則CI_Loader實(shí)例(方法鏈接) |
返回類(lèi)型: | mixed |
$ params(混合) - 數(shù)據(jù)庫(kù)組名稱(chēng)或配置選項(xiàng)
$ return(bool) - 是否返回加載的數(shù)據(jù)庫(kù)對(duì)象
$ query_builder(bool) - 是否加載查詢(xún)生成器
Returns: Loaded CI\_DB instance or FALSE on failure if $return is set to TRUE, otherwise CI\_Loader instance (method chaining)
Return type: mixed
This method lets you load the database class. The two parameters are **optional**. Please see the [database](../database/index) section for more info.
dbforge([$db = NULL[, $return = FALSE]])
參數(shù): | $ db(object) - 數(shù)據(jù)庫(kù)對(duì)象$ return(bool) - 是否返回Database Forge實(shí)例 |
---|---|
返回: | 如果$ return設(shè)置為T(mén)RUE,則加載CI_DB_forge實(shí)例,否則CI_Loader實(shí)例(方法鏈接) |
返回類(lèi)型: | 雜 |
$ db(object) - 數(shù)據(jù)庫(kù)對(duì)象
$ return(bool) - 是否返回Database Forge實(shí)例
Returns: Loaded CI\_DB\_forge instance if $return is set to TRUE, otherwise CI\_Loader instance (method chaining)
Return type: mixed
Loads the [Database Forge](../database/forge) class, please refer to that manual for more info.
dbutil([$db = NULL[, $return = FALSE]])
參數(shù): | $ db(object) - 數(shù)據(jù)庫(kù)對(duì)象$ return(bool) - 是否返回?cái)?shù)據(jù)庫(kù)實(shí)用程序?qū)嵗?/p> |
---|---|
返回: | 如果$ return設(shè)置為T(mén)RUE,則加載CI_DB_utility實(shí)例,否則CI_Loader實(shí)例(方法鏈接) |
返回類(lèi)型: | 雜 |
$ db(object) - 數(shù)據(jù)庫(kù)對(duì)象
$ return(bool) - 是否返回?cái)?shù)據(jù)庫(kù)實(shí)用程序?qū)嵗?/p>
Returns: Loaded CI\_DB\_utility instance if $return is set to TRUE, otherwise CI\_Loader instance (method chaining)
Return type: mixed
Loads the [Database Utilities](../database/utilities) class, please refer to that manual for more info.
helper($helpers)
參數(shù): | $ helpers(mixed) - 助手名稱(chēng)作為字符串或包含多個(gè)助手的數(shù)組 |
---|---|
返回: | CI_Loader實(shí)例(方法鏈接) |
返回類(lèi)型: | CI_Loader |
$ helpers(mixed) - 助手名稱(chēng)作為字符串或包含多個(gè)助手的數(shù)組
Returns: CI\_Loader instance (method chaining)
Return type: CI\_Loader
This method loads helper files, where file\_name is the name of the file, without the \_helper.php extension.
file($path[, $return = FALSE])
參數(shù): | $ path(string) - 文件路徑$ return(bool) - 是否返回加載的文件 |
---|---|
返回: | 文件內(nèi)容如果$ return設(shè)置為T(mén)RUE,否則CI_Loader實(shí)例(方法鏈接) |
返回類(lèi)型: | 雜 |
$ path(string) - 文件路徑
$ return(bool) - 是否返回加載的文件
返回:如果$ return設(shè)置為T(mén)RUE,則為文件內(nèi)容,否則CI \ _Loader實(shí)例(方法鏈接)
Return type: mixed
這是一種通用的文件加載方法。在第一個(gè)參數(shù)中提供文件路徑和名稱(chēng),它將打開(kāi)并讀取該文件。默認(rèn)情況下,數(shù)據(jù)會(huì)發(fā)送到瀏覽器,就像View文件一樣,但如果將第二個(gè)參數(shù)設(shè)置為boolean TRUE,則它將以字符串的形式返回?cái)?shù)據(jù)。
language($files[, $lang = ''])
參數(shù): | $ files(mixed) - 語(yǔ)言文件名或多個(gè)語(yǔ)言文件的數(shù)組$ lang(string) - 語(yǔ)言名稱(chēng) |
---|---|
返回: | CI_Loader實(shí)例(方法鏈接) |
返回類(lèi)型: | CI_Loader |
$ files(混合) - 語(yǔ)言文件名或多個(gè)語(yǔ)言文件的數(shù)組
$ lang(string) - 語(yǔ)言名稱(chēng)
Returns: CI\_Loader instance (method chaining)
Return type: CI\_Loader
此方法是[語(yǔ)言加載方法](語(yǔ)言)的別名:`$ this-> lang-> load()`。
config($file[, $use_sections = FALSE[, $fail_gracefully = FALSE]])
參數(shù): | $ file(string) - 配置文件名$ use_sections(bool) - 配置值是否應(yīng)該加載到它們自己的部分$ fail_gracefully(bool) - 是否僅在失敗時(shí)返回FALSE |
---|---|
返回: | 成功為T(mén)RUE,失敗為FALSE |
返回類(lèi)型: | 布爾 |
$ file(字符串) - 配置文件名
$ use_sections(bool) - 配置值是否應(yīng)該加載到它們自己的部分
$ fail_gracefully(bool) - 是否僅在失敗時(shí)返回FALSE
返回:成功時(shí)為T(mén)RUE,失敗時(shí)為FALSE
Return type: bool
此方法是[配置文件加載方法](config)的別名:`$ this-> config-> load()`
is_loaded($class)
參數(shù): | $ class(string) - 類(lèi)名 |
---|---|
返回: | 如果找到Singleton屬性名稱(chēng),則返回FALSE |
返回類(lèi)型: | 雜 |
$ class(string) - 類(lèi)名
返回:如果找到Singleton屬性名稱(chēng),則返回FALSE
Return type: mixed
允許您檢查課程是否已經(jīng)加載。
注意
這里的“類(lèi)”一詞是指圖書(shū)館和司機(jī)。
如果請(qǐng)求的類(lèi)已被加載,則該方法在CI超級(jí)對(duì)象中返回其分配的名稱(chēng),如果不是,則返回FALSE:
$this->load->library('form_validation'); $this->load->is_loaded('Form_validation'); // returns 'form_validation' $this->load->is_loaded('Nonexistent_library'); // returns FALSE
重要
如果您有一個(gè)以上的類(lèi)實(shí)例(分配給不同的屬性),那么將返回第一個(gè)實(shí)例。
$this->load->library('form_validation', $config, 'fv'); $this->load->library('form_validation'); $this->load->is_loaded('Form_validation'); // returns 'fv'
add_package_path($path[, $view_cascade = TRUE])
參數(shù): | $ path(string) - 添加$ view_cascade(bool)的路徑 - 是否使用級(jí)聯(lián)視圖 |
---|---|
返回: | CI_Loader實(shí)例(方法鏈接) |
返回類(lèi)型: | CI_Loader |
$ path(string) - 要添加的路徑
$ view_cascade(bool) - 是否使用級(jí)聯(lián)視圖
Returns: CI\_Loader instance (method chaining)
Return type: CI\_Loader
Adding a package path instructs the Loader class to prepend a given path for subsequent requests for resources. As an example, the “Foo Bar” application package above has a library named Foo\_bar.php. In our controller, we’d do the following:
$this->load->add_package_path(APPPATH.'third_party/foo_bar/') ->library('foo_bar');
remove_package_path([$path = ''])
參數(shù): | $ path(string) - 要?jiǎng)h除的路徑 |
---|---|
返回: | CI_Loader實(shí)例(方法鏈接) |
返回類(lèi)型: | CI_Loader |
$ path(string) - 要?jiǎng)h除的路徑
Returns: CI\_Loader instance (method chaining)
Return type: CI\_Loader
當(dāng)您的控制器完成使用應(yīng)用程序包中的資源后,特別是如果您有其他應(yīng)用程序包需要使用時(shí),您可能希望刪除程序包路徑,以使Loader不再在該目錄中查找資源。要?jiǎng)h除添加的最后一個(gè)路徑,只需調(diào)用沒(méi)有參數(shù)的方法。
或者要?jiǎng)h除特定的包路徑,請(qǐng)指定先前add_package_path()
為包提供的路徑:
$this->load->remove_package_path(APPPATH.'third_party/foo_bar/');
get_package_paths([$include_base = TRUE])
參數(shù): | $ include_base(bool) - 是否包含BASEPATH |
---|---|
返回: | 包路徑的數(shù)組 |
返回類(lèi)型: | 數(shù)組 |
$ include_base(bool) - 是否包含BASEPATH
Returns: An array of package paths
Return type: array
Returns all currently available package paths.