©
本文档使用
php.cn手册 发布
正如名字所暗示的,Loader用于加载元素。这些元素可以是库(类)查看文件,驱动程序,助手,模型或您自己的文件。
注意
该类由系统自动初始化,因此不需要手动执行。
应用程序“包”
包视图文件
类参考
应用程序包允许在单个目录中轻松分发完整的资源集,并配有自己的库,模型,帮助程序,配置和语言文件。建议将这些软件包放在application / third_party目录中。以下是一个软件包目录的示例地图。
以下是名为“Foo Bar”的应用程序包的目录示例。
/application/third_party/foo_bar config/helpers/language/libraries/models/
无论“Foo Bar”应用程序包的用途如何,它都有自己的配置文件,帮助程序,语言文件,库和模型。要在您的控制器中使用这些资源,您首先需要通过通过add_package_path()
方法添加包路径来告诉Loader您将要从包中加载资源。
默认情况下,包视图文件路径在add_package_path()
被调用时设置。视图路径循环遍历,并且一旦遇到该视图加载的匹配。
在这种情况下,可能会发生命名包内的冲突,并且可能会加载不正确的包。为了确保这一点,请在调用时设置可选的第二个参数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]])
参数: | $ library(mixed) - 库名称作为一个字符串或一个包含多个库的数组$ params(array) - 可选参数数组传递给加载库的构造函数$ object_name(string) - 可选对象名称, |
---|---|
返回: | CI_Loader实例(方法链接) |
返回类型: | CI_Loader |
$库(混合) - 库名称作为字符串或具有多个库的数组
$ params(array) - 可选参数数组传递给加载的库的构造函数
$ object_name(string) - 将库分配给的可选对象名称
Returns: CI\_Loader instance (method chaining)
Return type: CI\_Loader
This method is used to load core classes.
注意
我们可以互换地使用术语“类”和“库”。
例如,如果您想用CodeIgniter发送电子邮件,第一步是在您的控制器中加载电子邮件类:
$this->load->library('email');
一旦加载,库将准备好使用,使用$this->email
。
库文件可以存储在主“库”目录的子目录中,也可以存储在个人应用程序/库目录中。要加载位于子目录中的文件,只需包含相对于“库”目录的路径。例如,如果您的文件位于:
libraries/flavors/Chocolate.php
您将使用以下方式加载它:
$this->load->library('flavors/chocolate');
您可以根据需要将文件嵌套在多个子目录中。
此外,可以通过将一系列库传递给加载方法来同时加载多个库。
$this->load->library(array('email', 'table'));
设置选项
第二个(可选)参数允许您选择性地通过配置设置。您通常会将这些数据作为数组传递:
$config = array ( 'mailtype' => 'html', 'charset' => 'utf-8, 'priority' => '1' ); $this->load->library('email', $config);
配置选项通常也可以通过配置文件来设置。每个图书馆都在其自己的页面中进行了详细说明,因此请阅读您想要使用的每个图书馆的信息。
请注意,当为阵列中的第一个参数提供多个库时,每个库都会收到相同的参数信息。
将库分配给不同的对象名称
如果第三个(可选)参数为空,则通常将库分配给与库具有相同名称的对象。例如,如果该库名为Calendar,则它将被分配给一个名为的变量$this->calendar
。
如果您更喜欢设置自己的类名,则可以将其值传递给第三个参数:
$this->load->library('calendar', NULL, 'my_calendar'); // Calendar class is now accessed using: $this->my_calendar
请注意,如果在数组中为第一个参数提供了多个库,则会放弃此参数。
driver($library[, $params = NULL[, $object_name]])
参数: | $ library(mixed) - 库名称作为一个字符串或一个包含多个库的数组$ params(array) - 可选参数数组传递给加载库的构造函数$ object_name(string) - 可选对象名称, |
---|---|
返回: | CI_Loader实例(方法链接) |
返回类型: | CI_Loader |
$库(混合) - 库名称作为字符串或具有多个库的数组
$ params(array) - 可选参数数组传递给加载的库的构造函数
$ object_name(string) - 将库分配给的可选对象名称
Returns: CI\_Loader instance (method chaining)
Return type: CI\_Loader
该方法用于加载驱动程序库,非常像`library()`方法。
例如,如果您想使用CodeIgniter会话,第一步是在您的控制器中加载会话驱动程序:
$this->load->driver('session');
一旦加载,库将准备好使用,使用$this->session
。
驱动程序文件必须存储在主“库”目录的子目录中,或存储在个人应用程序/库目录中。该子目录必须与父类名称匹配。详细信息请阅读驱动程序描述。
此外,可以通过将一组驱动程序传递给加载方法来同时加载多个驱动程序库。
$this->load->driver(array('session', 'cache'));
设置选项
第二个(可选)参数允许您可选地传递配置设置。您通常会将这些数据作为数组传递:
$config = array( 'sess_driver' => 'cookie', 'sess_encrypt_cookie' => true, 'encryption_key' => 'mysecretkey' ); $this->load->driver('session', $config);
配置选项通常也可以通过配置文件来设置。每个图书馆都在其自己的页面中进行了详细说明,因此请阅读您想要使用的每个图书馆的信息。
将驱动程序分配给不同的对象名称
如果第三个(可选)参数为空,则该库将被分配给与父类相同名称的对象。例如,如果该库名为Session,则它将被分配给一个名为的变量$this->session
。
如果您更喜欢设置自己的类名,则可以将其值传递给第三个参数:
$this->load->library('session', '', 'my_session'); // Session class is now accessed using: $this->my_session
view($view[, $vars = array()[, return = FALSE]])
参数: | $ view(string) - 查看名称$ vars(array) - 一个变量的关联数组$ return(bool) - 是否返回加载的视图 |
---|---|
返回: | 如果$ return设置为TRUE,则查看内容字符串,否则CI_Loader实例(方法链接) |
返回类型: | 杂 |
$ view(string) - 查看名称
$ vars(array) - 一个变量的关联数组
$ return(bool) - 是否返回加载的视图
返回:如果$ return设置为TRUE,则查看内容字符串,否则CI \ _Loader实例(方法链接)
Return type: mixed
此方法用于加载您的视图文件。如果您还没有阅读用户指南的[Views](../ general / views)部分,建议您这样做,因为它会告诉您如何使用此方法。
第一个参数是必需的。这是您想要加载的视图文件的名称。
注意
.php文件扩展名不需要指定,除非您使用.php以外的内容。
第二个可选参数可以将关联数组或对象作为输入,它通过PHP extract()函数运行以转换为可用于视图文件的变量。再次阅读Views页面以了解这可能是有用的。
第三个可选参数允许您更改方法的行为,以便将数据作为字符串返回,而不是将其发送到浏览器。如果您想以某种方式处理数据,这可能很有用。如果将该参数设置为TRUE(布尔值),它将返回数据。默认行为是FALSE,将其发送到您的浏览器。如果你想返回数据,记得把它分配给一个变量:
$string = $this->load->view('myfile', '', TRUE);
vars($vars[, $val = ''])
参数: | $ vars(混合) - 一个变量数组或单个变量名称$ val(混合) - 可选变量值 |
---|---|
返回: | CI_Loader实例(方法链接) |
返回类型: | CI_Loader |
$ vars(混合) - 一个变量数组或单个变量名称
$ val(混合) - 可选变量值
Returns: CI\_Loader instance (method chaining)
Return type: CI\_Loader
此方法将关联数组作为输入并使用PHP [extract()](https://php.net/extract)函数生成变量。该方法产生与使用上面的`$ this-> load-> view()`方法的第二个参数相同的结果。你可能想独立使用这个方法的原因是,如果你想在你的控制器的构造函数中设置一些全局变量,并让它们在任何从任何方法加载的视图文件中变得可用。您可以对此方法进行多次调用。数据被缓存并合并到一个数组中以转换为变量。
get_var($key)
参数: | $ key(字符串) - 变量名称键 |
---|---|
返回: | 如果找到键值,则返回NULL,否则返回NULL |
返回类型: | 杂 |
$ key(字符串) - 变量名称键
Returns: Value if key is found, NULL if not
Return type: mixed
该方法检查可用于视图的变量的关联数组。如果出于某种原因在库或另一个使用`$ this-> load-> vars()`的控制器方法中设置了var,这将非常有用。
get_vars()
返回: | 所有分配的视图变量的数组 |
---|---|
返回类型: | 排列 |
clear_vars()
返回: | CI_Loader实例(方法链接) |
---|---|
返回类型: | CI_Loader |
model($model[, $name = ''[, $db_conn = FALSE]])
参数: | $ model(mixed) - 模型名称或包含多个模型的数组$ name(string) - 将模型分配给$ db_conn(string)的可选对象名称 - 要加载的可选数据库配置组 |
---|---|
返回: | CI_Loader实例(方法链接) |
返回类型: | CI_Loader |
$ model(mixed) - 模型名称或包含多个模型的数组
$ name(字符串) - 将模型分配给的可选对象名称
$ db_conn(字符串) - 要加载的可选数据库配置组
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');
如果您希望将模型分配给不同的对象名称,则可以通过加载方法的第二个参数指定它:
$this->load->model('model_name', 'fubar'); $this->fubar->method();
database([$params = ''[, $return = FALSE[, $query_builder = NULL]]])
参数: | $ params(mixed) - 数据库组名或配置选项$ return(bool) - 是否返回加载的数据库对象$ query_builder(bool) - 是否加载查询生成器 |
---|---|
返回: | 如果$ return设置为TRUE,则加载CI_DB实例或FALSE失败,否则CI_Loader实例(方法链接) |
返回类型: | mixed |
$ params(混合) - 数据库组名称或配置选项
$ return(bool) - 是否返回加载的数据库对象
$ 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]])
参数: | $ db(object) - 数据库对象$ return(bool) - 是否返回Database Forge实例 |
---|---|
返回: | 如果$ return设置为TRUE,则加载CI_DB_forge实例,否则CI_Loader实例(方法链接) |
返回类型: | 杂 |
$ db(object) - 数据库对象
$ return(bool) - 是否返回Database Forge实例
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]])
参数: | $ db(object) - 数据库对象$ return(bool) - 是否返回数据库实用程序实例 |
---|---|
返回: | 如果$ return设置为TRUE,则加载CI_DB_utility实例,否则CI_Loader实例(方法链接) |
返回类型: | 杂 |
$ db(object) - 数据库对象
$ return(bool) - 是否返回数据库实用程序实例
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)
参数: | $ helpers(mixed) - 助手名称作为字符串或包含多个助手的数组 |
---|---|
返回: | CI_Loader实例(方法链接) |
返回类型: | CI_Loader |
$ helpers(mixed) - 助手名称作为字符串或包含多个助手的数组
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])
参数: | $ path(string) - 文件路径$ return(bool) - 是否返回加载的文件 |
---|---|
返回: | 文件内容如果$ return设置为TRUE,否则CI_Loader实例(方法链接) |
返回类型: | 杂 |
$ path(string) - 文件路径
$ return(bool) - 是否返回加载的文件
返回:如果$ return设置为TRUE,则为文件内容,否则CI \ _Loader实例(方法链接)
Return type: mixed
这是一种通用的文件加载方法。在第一个参数中提供文件路径和名称,它将打开并读取该文件。默认情况下,数据会发送到浏览器,就像View文件一样,但如果将第二个参数设置为boolean TRUE,则它将以字符串的形式返回数据。
language($files[, $lang = ''])
参数: | $ files(mixed) - 语言文件名或多个语言文件的数组$ lang(string) - 语言名称 |
---|---|
返回: | CI_Loader实例(方法链接) |
返回类型: | CI_Loader |
$ files(混合) - 语言文件名或多个语言文件的数组
$ lang(string) - 语言名称
Returns: CI\_Loader instance (method chaining)
Return type: CI\_Loader
此方法是[语言加载方法](语言)的别名:`$ this-> lang-> load()`。
config($file[, $use_sections = FALSE[, $fail_gracefully = FALSE]])
参数: | $ file(string) - 配置文件名$ use_sections(bool) - 配置值是否应该加载到它们自己的部分$ fail_gracefully(bool) - 是否仅在失败时返回FALSE |
---|---|
返回: | 成功为TRUE,失败为FALSE |
返回类型: | 布尔 |
$ file(字符串) - 配置文件名
$ use_sections(bool) - 配置值是否应该加载到它们自己的部分
$ fail_gracefully(bool) - 是否仅在失败时返回FALSE
返回:成功时为TRUE,失败时为FALSE
Return type: bool
此方法是[配置文件加载方法](config)的别名:`$ this-> config-> load()`
is_loaded($class)
参数: | $ class(string) - 类名 |
---|---|
返回: | 如果找到Singleton属性名称,则返回FALSE |
返回类型: | 杂 |
$ class(string) - 类名
返回:如果找到Singleton属性名称,则返回FALSE
Return type: mixed
允许您检查课程是否已经加载。
注意
这里的“类”一词是指图书馆和司机。
如果请求的类已被加载,则该方法在CI超级对象中返回其分配的名称,如果不是,则返回FALSE:
$this->load->library('form_validation'); $this->load->is_loaded('Form_validation'); // returns 'form_validation' $this->load->is_loaded('Nonexistent_library'); // returns FALSE
重要
如果您有一个以上的类实例(分配给不同的属性),那么将返回第一个实例。
$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])
参数: | $ path(string) - 添加$ view_cascade(bool)的路径 - 是否使用级联视图 |
---|---|
返回: | CI_Loader实例(方法链接) |
返回类型: | CI_Loader |
$ path(string) - 要添加的路径
$ view_cascade(bool) - 是否使用级联视图
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 = ''])
参数: | $ path(string) - 要删除的路径 |
---|---|
返回: | CI_Loader实例(方法链接) |
返回类型: | CI_Loader |
$ path(string) - 要删除的路径
Returns: CI\_Loader instance (method chaining)
Return type: CI\_Loader
当您的控制器完成使用应用程序包中的资源后,特别是如果您有其他应用程序包需要使用时,您可能希望删除程序包路径,以使Loader不再在该目录中查找资源。要删除添加的最后一个路径,只需调用没有参数的方法。
或者要删除特定的包路径,请指定先前add_package_path()
为包提供的路径:
$this->load->remove_package_path(APPPATH.'third_party/foo_bar/');
get_package_paths([$include_base = TRUE])
参数: | $ include_base(bool) - 是否包含BASEPATH |
---|---|
返回: | 包路径的数组 |
返回类型: | 数组 |
$ include_base(bool) - 是否包含BASEPATH
Returns: An array of package paths
Return type: array
Returns all currently available package paths.