?
このドキュメントでは、 php中國語ネットマニュアル リリース
正如名字所暗示的,Loader用于加載元素。這些元素可以是庫(類)查看文件,驅(qū)動程序,助手,模型或您自己的文件。
注意
該類由系統(tǒng)自動初始化,因此不需要手動執(zhí)行。
應(yīng)用程序“包”
包視圖文件
類參考
應(yīng)用程序包允許在單個目錄中輕松分發(fā)完整的資源集,并配有自己的庫,模型,幫助程序,配置和語言文件。建議將這些軟件包放在application / third_party目錄中。以下是一個軟件包目錄的示例地圖。
以下是名為“Foo Bar”的應(yīng)用程序包的目錄示例。
/application/third_party/foo_bar config/helpers/language/libraries/models/
無論“Foo Bar”應(yīng)用程序包的用途如何,它都有自己的配置文件,幫助程序,語言文件,庫和模型。要在您的控制器中使用這些資源,您首先需要通過通過add_package_path()
方法添加包路徑來告訴Loader您將要從包中加載資源。
默認(rèn)情況下,包視圖文件路徑在add_package_path()
被調(diào)用時設(shè)置。視圖路徑循環(huán)遍歷,并且一旦遇到該視圖加載的匹配。
在這種情況下,可能會發(fā)生命名包內(nèi)的沖突,并且可能會加載不正確的包。為了確保這一點(diǎn),請?jiān)谡{(diào)用時設(shè)置可選的第二個參數(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) - 庫名稱作為一個字符串或一個包含多個庫的數(shù)組$ params(array) - 可選參數(shù)數(shù)組傳遞給加載庫的構(gòu)造函數(shù)$ object_name(string) - 可選對象名稱, |
---|---|
返回: | CI_Loader實(shí)例(方法鏈接) |
返回類型: | CI_Loader |
$庫(混合) - 庫名稱作為字符串或具有多個庫的數(shù)組
$ params(array) - 可選參數(shù)數(shù)組傳遞給加載的庫的構(gòu)造函數(shù)
$ object_name(string) - 將庫分配給的可選對象名稱
Returns: CI\_Loader instance (method chaining)
Return type: CI\_Loader
This method is used to load core classes.
注意
我們可以互換地使用術(shù)語“類”和“庫”。
例如,如果您想用CodeIgniter發(fā)送電子郵件,第一步是在您的控制器中加載電子郵件類:
$this->load->library('email');
一旦加載,庫將準(zhǔn)備好使用,使用$this->email
。
庫文件可以存儲在主“庫”目錄的子目錄中,也可以存儲在個人應(yīng)用程序/庫目錄中。要加載位于子目錄中的文件,只需包含相對于“庫”目錄的路徑。例如,如果您的文件位于:
libraries/flavors/Chocolate.php
您將使用以下方式加載它:
$this->load->library('flavors/chocolate');
您可以根據(jù)需要將文件嵌套在多個子目錄中。
此外,可以通過將一系列庫傳遞給加載方法來同時加載多個庫。
$this->load->library(array('email', 'table'));
設(shè)置選項(xiàng)
第二個(可選)參數(shù)允許您選擇性地通過配置設(shè)置。您通常會將這些數(shù)據(jù)作為數(shù)組傳遞:
$config = array ( 'mailtype' => 'html', 'charset' => 'utf-8, 'priority' => '1' ); $this->load->library('email', $config);
配置選項(xiàng)通常也可以通過配置文件來設(shè)置。每個圖書館都在其自己的頁面中進(jìn)行了詳細(xì)說明,因此請閱讀您想要使用的每個圖書館的信息。
請注意,當(dāng)為陣列中的第一個參數(shù)提供多個庫時,每個庫都會收到相同的參數(shù)信息。
將庫分配給不同的對象名稱
如果第三個(可選)參數(shù)為空,則通常將庫分配給與庫具有相同名稱的對象。例如,如果該庫名為Calendar,則它將被分配給一個名為的變量$this->calendar
。
如果您更喜歡設(shè)置自己的類名,則可以將其值傳遞給第三個參數(shù):
$this->load->library('calendar', NULL, 'my_calendar'); // Calendar class is now accessed using: $this->my_calendar
請注意,如果在數(shù)組中為第一個參數(shù)提供了多個庫,則會放棄此參數(shù)。
driver($library[, $params = NULL[, $object_name]])
參數(shù): | $ library(mixed) - 庫名稱作為一個字符串或一個包含多個庫的數(shù)組$ params(array) - 可選參數(shù)數(shù)組傳遞給加載庫的構(gòu)造函數(shù)$ object_name(string) - 可選對象名稱, |
---|---|
返回: | CI_Loader實(shí)例(方法鏈接) |
返回類型: | CI_Loader |
$庫(混合) - 庫名稱作為字符串或具有多個庫的數(shù)組
$ params(array) - 可選參數(shù)數(shù)組傳遞給加載的庫的構(gòu)造函數(shù)
$ object_name(string) - 將庫分配給的可選對象名稱
Returns: CI\_Loader instance (method chaining)
Return type: CI\_Loader
該方法用于加載驅(qū)動程序庫,非常像`library()`方法。
例如,如果您想使用CodeIgniter會話,第一步是在您的控制器中加載會話驅(qū)動程序:
$this->load->driver('session');
一旦加載,庫將準(zhǔn)備好使用,使用$this->session
。
驅(qū)動程序文件必須存儲在主“庫”目錄的子目錄中,或存儲在個人應(yīng)用程序/庫目錄中。該子目錄必須與父類名稱匹配。詳細(xì)信息請閱讀驅(qū)動程序描述。
此外,可以通過將一組驅(qū)動程序傳遞給加載方法來同時加載多個驅(qū)動程序庫。
$this->load->driver(array('session', 'cache'));
設(shè)置選項(xiàng)
第二個(可選)參數(shù)允許您可選地傳遞配置設(shè)置。您通常會將這些數(shù)據(jù)作為數(shù)組傳遞:
$config = array( 'sess_driver' => 'cookie', 'sess_encrypt_cookie' => true, 'encryption_key' => 'mysecretkey' ); $this->load->driver('session', $config);
配置選項(xiàng)通常也可以通過配置文件來設(shè)置。每個圖書館都在其自己的頁面中進(jìn)行了詳細(xì)說明,因此請閱讀您想要使用的每個圖書館的信息。
將驅(qū)動程序分配給不同的對象名稱
如果第三個(可選)參數(shù)為空,則該庫將被分配給與父類相同名稱的對象。例如,如果該庫名為Session,則它將被分配給一個名為的變量$this->session
。
如果您更喜歡設(shè)置自己的類名,則可以將其值傳遞給第三個參數(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) - 查看名稱$ vars(array) - 一個變量的關(guān)聯(lián)數(shù)組$ return(bool) - 是否返回加載的視圖 |
---|---|
返回: | 如果$ return設(shè)置為TRUE,則查看內(nèi)容字符串,否則CI_Loader實(shí)例(方法鏈接) |
返回類型: | 雜 |
$ view(string) - 查看名稱
$ vars(array) - 一個變量的關(guān)聯(lián)數(shù)組
$ return(bool) - 是否返回加載的視圖
返回:如果$ return設(shè)置為TRUE,則查看內(nèi)容字符串,否則CI \ _Loader實(shí)例(方法鏈接)
Return type: mixed
此方法用于加載您的視圖文件。如果您還沒有閱讀用戶指南的[Views](../ general / views)部分,建議您這樣做,因?yàn)樗鼤嬖V您如何使用此方法。
第一個參數(shù)是必需的。這是您想要加載的視圖文件的名稱。
注意
.php文件擴(kuò)展名不需要指定,除非您使用.php以外的內(nèi)容。
第二個可選參數(shù)可以將關(guān)聯(lián)數(shù)組或?qū)ο笞鳛檩斎?,它通過PHP extract()函數(shù)運(yùn)行以轉(zhuǎn)換為可用于視圖文件的變量。再次閱讀Views頁面以了解這可能是有用的。
第三個可選參數(shù)允許您更改方法的行為,以便將數(shù)據(jù)作為字符串返回,而不是將其發(fā)送到瀏覽器。如果您想以某種方式處理數(shù)據(jù),這可能很有用。如果將該參數(shù)設(shè)置為TRUE(布爾值),它將返回數(shù)據(jù)。默認(rèn)行為是FALSE,將其發(fā)送到您的瀏覽器。如果你想返回數(shù)據(jù),記得把它分配給一個變量:
$string = $this->load->view('myfile', '', TRUE);
vars($vars[, $val = ''])
參數(shù): | $ vars(混合) - 一個變量數(shù)組或單個變量名稱$ val(混合) - 可選變量值 |
---|---|
返回: | CI_Loader實(shí)例(方法鏈接) |
返回類型: | CI_Loader |
$ vars(混合) - 一個變量數(shù)組或單個變量名稱
$ 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()`方法的第二個參數(shù)相同的結(jié)果。你可能想獨(dú)立使用這個方法的原因是,如果你想在你的控制器的構(gòu)造函數(shù)中設(shè)置一些全局變量,并讓它們在任何從任何方法加載的視圖文件中變得可用。您可以對此方法進(jìn)行多次調(diào)用。數(shù)據(jù)被緩存并合并到一個數(shù)組中以轉(zhuǎn)換為變量。
get_var($key)
參數(shù): | $ key(字符串) - 變量名稱鍵 |
---|---|
返回: | 如果找到鍵值,則返回NULL,否則返回NULL |
返回類型: | 雜 |
$ key(字符串) - 變量名稱鍵
Returns: Value if key is found, NULL if not
Return type: mixed
該方法檢查可用于視圖的變量的關(guān)聯(lián)數(shù)組。如果出于某種原因在庫或另一個使用`$ this-> load-> vars()`的控制器方法中設(shè)置了var,這將非常有用。
get_vars()
返回: | 所有分配的視圖變量的數(shù)組 |
---|---|
返回類型: | 排列 |
clear_vars()
返回: | CI_Loader實(shí)例(方法鏈接) |
---|---|
返回類型: | CI_Loader |
model($model[, $name = ''[, $db_conn = FALSE]])
參數(shù): | $ model(mixed) - 模型名稱或包含多個模型的數(shù)組$ name(string) - 將模型分配給$ db_conn(string)的可選對象名稱 - 要加載的可選數(shù)據(jù)庫配置組 |
---|---|
返回: | CI_Loader實(shí)例(方法鏈接) |
返回類型: | CI_Loader |
$ model(mixed) - 模型名稱或包含多個模型的數(shù)組
$ name(字符串) - 將模型分配給的可選對象名稱
$ db_conn(字符串) - 要加載的可選數(shù)據(jù)庫配置組
Returns: CI\_Loader instance (method chaining)
Return type: CI\_Loader
$this->load->model('model\_name');
如果您的模型位于子目錄中,請包含模型目錄中的相對路徑。例如,如果您的模型位于application / models / blog / Queries.php中,您將使用以下命令加載模型:
$this->load->model('blog/queries');
如果您希望將模型分配給不同的對象名稱,則可以通過加載方法的第二個參數(shù)指定它:
$this->load->model('model_name', 'fubar'); $this->fubar->method();
database([$params = ''[, $return = FALSE[, $query_builder = NULL]]])
參數(shù): | $ params(mixed) - 數(shù)據(jù)庫組名或配置選項(xiàng)$ return(bool) - 是否返回加載的數(shù)據(jù)庫對象$ query_builder(bool) - 是否加載查詢生成器 |
---|---|
返回: | 如果$ return設(shè)置為TRUE,則加載CI_DB實(shí)例或FALSE失敗,否則CI_Loader實(shí)例(方法鏈接) |
返回類型: | mixed |
$ params(混合) - 數(shù)據(jù)庫組名稱或配置選項(xiàng)
$ return(bool) - 是否返回加載的數(shù)據(jù)庫對象
$ query_builder(bool) - 是否加載查詢生成器
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ù)庫對象$ return(bool) - 是否返回Database Forge實(shí)例 |
---|---|
返回: | 如果$ return設(shè)置為TRUE,則加載CI_DB_forge實(shí)例,否則CI_Loader實(shí)例(方法鏈接) |
返回類型: | 雜 |
$ db(object) - 數(shù)據(jù)庫對象
$ 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ù)庫對象$ return(bool) - 是否返回數(shù)據(jù)庫實(shí)用程序?qū)嵗?/p> |
---|---|
返回: | 如果$ return設(shè)置為TRUE,則加載CI_DB_utility實(shí)例,否則CI_Loader實(shí)例(方法鏈接) |
返回類型: | 雜 |
$ db(object) - 數(shù)據(jù)庫對象
$ return(bool) - 是否返回數(shù)據(jù)庫實(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) - 助手名稱作為字符串或包含多個助手的數(shù)組 |
---|---|
返回: | CI_Loader實(shí)例(方法鏈接) |
返回類型: | CI_Loader |
$ helpers(mixed) - 助手名稱作為字符串或包含多個助手的數(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è)置為TRUE,否則CI_Loader實(shí)例(方法鏈接) |
返回類型: | 雜 |
$ path(string) - 文件路徑
$ return(bool) - 是否返回加載的文件
返回:如果$ return設(shè)置為TRUE,則為文件內(nèi)容,否則CI \ _Loader實(shí)例(方法鏈接)
Return type: mixed
這是一種通用的文件加載方法。在第一個參數(shù)中提供文件路徑和名稱,它將打開并讀取該文件。默認(rèn)情況下,數(shù)據(jù)會發(fā)送到瀏覽器,就像View文件一樣,但如果將第二個參數(shù)設(shè)置為boolean TRUE,則它將以字符串的形式返回數(shù)據(jù)。
language($files[, $lang = ''])
參數(shù): | $ files(mixed) - 語言文件名或多個語言文件的數(shù)組$ lang(string) - 語言名稱 |
---|---|
返回: | CI_Loader實(shí)例(方法鏈接) |
返回類型: | CI_Loader |
$ files(混合) - 語言文件名或多個語言文件的數(shù)組
$ lang(string) - 語言名稱
Returns: CI\_Loader instance (method chaining)
Return type: CI\_Loader
此方法是[語言加載方法](語言)的別名:`$ this-> lang-> load()`。
config($file[, $use_sections = FALSE[, $fail_gracefully = FALSE]])
參數(shù): | $ file(string) - 配置文件名$ use_sections(bool) - 配置值是否應(yīng)該加載到它們自己的部分$ fail_gracefully(bool) - 是否僅在失敗時返回FALSE |
---|---|
返回: | 成功為TRUE,失敗為FALSE |
返回類型: | 布爾 |
$ file(字符串) - 配置文件名
$ use_sections(bool) - 配置值是否應(yīng)該加載到它們自己的部分
$ fail_gracefully(bool) - 是否僅在失敗時返回FALSE
返回:成功時為TRUE,失敗時為FALSE
Return type: bool
此方法是[配置文件加載方法](config)的別名:`$ this-> config-> load()`
is_loaded($class)
參數(shù): | $ class(string) - 類名 |
---|---|
返回: | 如果找到Singleton屬性名稱,則返回FALSE |
返回類型: | 雜 |
$ class(string) - 類名
返回:如果找到Singleton屬性名稱,則返回FALSE
Return type: mixed
允許您檢查課程是否已經(jīng)加載。
注意
這里的“類”一詞是指圖書館和司機(jī)。
如果請求的類已被加載,則該方法在CI超級對象中返回其分配的名稱,如果不是,則返回FALSE:
$this->load->library('form_validation'); $this->load->is_loaded('Form_validation'); // returns 'form_validation' $this->load->is_loaded('Nonexistent_library'); // returns FALSE
重要
如果您有一個以上的類實(shí)例(分配給不同的屬性),那么將返回第一個實(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)的路徑 - 是否使用級聯(lián)視圖 |
---|---|
返回: | CI_Loader實(shí)例(方法鏈接) |
返回類型: | CI_Loader |
$ path(string) - 要添加的路徑
$ view_cascade(bool) - 是否使用級聯(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) - 要刪除的路徑 |
---|---|
返回: | CI_Loader實(shí)例(方法鏈接) |
返回類型: | CI_Loader |
$ path(string) - 要刪除的路徑
Returns: CI\_Loader instance (method chaining)
Return type: CI\_Loader
當(dāng)您的控制器完成使用應(yīng)用程序包中的資源后,特別是如果您有其他應(yīng)用程序包需要使用時,您可能希望刪除程序包路徑,以使Loader不再在該目錄中查找資源。要刪除添加的最后一個路徑,只需調(diào)用沒有參數(shù)的方法。
或者要刪除特定的包路徑,請指定先前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ù)組 |
返回類型: | 數(shù)組 |
$ include_base(bool) - 是否包含BASEPATH
Returns: An array of package paths
Return type: array
Returns all currently available package paths.