directory search
欢迎 目录 快速参考图 基本信息 服务器要求 许可协议 变更记录 关于CodeIgniter 安装 下载 CodeIgniter 安装指导 从老版本升级 疑难解答 介绍 开始 CodeIgniter 是什么? CodeIgniter 速记表 支持特性 应用程序流程图 模型-视图-控制器 架构目标 教程 内容提要 加载静态内容 创建新闻条目 读取新闻条目 结束语 常规主题 CodeIgniter URL 控制器 保留字 视图 模型 辅助函数 使用 CodeIgniter 类库 创建你自己的类库 使用 CodeIgniter 适配器 创建适配器 创建核心系统类 钩子 - 扩展框架的核心 自动装载资源 公共函数 URI 路由 错误处理 缓存 调试应用程序 以CLI方式运行 管理应用程序 处理多环境 PHP替代语法 安全 开发规范 类库参考 基准测试类 日历类 购物车类 配置类 Email 类 加密类 文件上传类 表单验证详解 FTP 类 图像处理类 输入类 Javascript 类 语言类 装载类 迁移类 输出类 分页类 模板解析器类 安全类 Session 类 HTML 表格类 引用通告类 排版类 单元测试类 URI 类 User-Agent 类 表单验证 XML-RPC 和 XML-RPC 服务器 Zip 编码类 缓存适配器 适配器参考 适配器 数据库类 Active Record 类 数据库缓存类 自定义函数调用 数据库配置 连接你的数据库 数据库快速入门例子代码 字段数据 数据库维护类 查询辅助函数 数据库类 查询 生成查询记录集 表数据 事务 数据库工具类 JavaScript类 辅助函数参考 数组辅助函数 CAPTCHA 辅助函数 Cookie Helper 日期辅助函数 目录辅助函数 下载辅助函数 Email 辅助函数 文件辅助函数 表单辅助函数 HTML辅助函数 Inflector 辅助函数 语言辅助函数 数字辅助函数 路径辅助函数 安全辅助函数 表情辅助函数 字符串辅助函数 文本辅助函数 排版辅助函数 URL 辅助函数 XML 辅助函数
characters

CodeIgniter 用户指南 版本 2.1.0

编辑文档、查看近期更改请 登录 或 注册  找回密码
查看原文

装载类

装载,顾名思义,是用来装载元素。这些元素可以是库 (类) 视图文件, 辅助函数, 模型, 或者是你自己的文件。

提示: 这个类是由系统初始化的,所以,没有必要自己手动初始化。

以下为这个类里面的函数:

$this->load->library('class_name', $config, 'object name')

这个函数是用来加载核心类。class_name 是你要加载的类的名称。 提示: “类”和“库”是可替换使用的。

比如,你想用 CodeIgniter 来发送邮件,第一步就是在你的控制器里加载 email 类。

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

一旦被加载,就可以使用该类了, 使用 $this->email->some_function()

类库文件可以被保存到主libraries目录的子目录下面,或者保存到个人的application/libraries 目录下。 要载入子目录下的文件,只需将路径包含进来就可以了,注意这里说的路径是指相对于libraries目录的路径。 例如,当你有一个文件保存在下面这个位置:

libraries/flavors/chocolate.php

你应该使用下面的方式来载入它:

$this->load->library('flavors/chocolate');

你可以随心所欲地将文件保存到多层的子目录下。

Additionally, multiple libraries can be loaded at the same time by passing an array of libraries to the load function.

$this->load->library(array('email', 'table'));

设置选项

第二个参数是可选的,作用是允许你有选择性地传递配置参数。一般来说你可以将参数以数组的形式传递过去:

$config = array (
                  'mailtype' => 'html',
                  'charset'  => 'utf-8,
                  'priority' => '1'
               );

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

配置参数通常也可以保存在一个配置文件中。每个类库在其各自的页面中都有详细的说明,所以在使用类库之前,你必须认真阅读它们的说明。

Please take note, when multiple libraries are supplied in an array for the first parameter, each will receive the same parameter information.

给类库分配不同的对象名

第三个参数也是可选的,如果为空,类库通常就会被赋值给一个与类库同名的对象。例如,如果类库名为 Session, 它将会被赋值给一个名为 $this->session 的变量。

如果你希望使用你的自定义名称,你可以通过第三个参数把它传递过去:

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

// Session 类现在可以通过下面的方式访问:

$this->my_session

Please take note, when multiple libraries are supplied in an array for the first parameter, this parameter is discarded.

$this->load->view('file_name', $data, true/false)

这个函数是用来加载你的视图文件。 如果你尚未阅读本手册视图 章节的话,建议你先去阅读那里的内容,会有更详细的函数使用说明.

第一个参数是必须的. 指定你要载入的视图文件的名称.  注意: 无需加上 .php 扩展名,除非你使用了其他的扩展名。

第二个参数 optional 允许你传入数组或对象, 传入的数组或对象将使用 php extract 函数导出,你可以在视图中任意使用这些导出的变量. 此外,请阅读 视图 章节了解该功能的更多用法.

第三个参数是可选的,作用是改变函数的运行方式,将数据以字符串的形式返回,而不是发送给浏览器。当你希望用不同的方式处理数据时,这个参数就非常有用。如果你将这个参数设置为 true (布尔型),函数就会返回数据。这个参数的默认值是 false, 也就是数据将会被发送给浏览器。如果你希望数据被返回,记得要将它赋值给一个变量:

$string = $this->load->view('myfile', '', true);

$this->load->model('Model_name');

$this->load->model('Model_name');

如果你的模型位于models目录的子目录下,那么,相对路径也必须被包含进来。例如,如果你有一个模型位于 application/models/blog/queries.php ,你应该使用下面的语句来载入它:

$this->load->model('blog/queries');

如果你希望给模型赋予一个你自定义的对象名,请在函数的第二个参数中给出你自定义的名称:

$this->load->model('Model_name', 'fubar');

$this->fubar->function();

$this->load->database('options', true/false)

这个函数的作用是载入数据库类。这两个参数都是可选的。请查看 数据库 段落以获取更多信息。

$this->load->vars($array)

这个函数以一个关联数组作为输入参数,将这个数组用PHP的extract函数, 转化成与这个数组对应的变量.这个函数如果用第二个参数,将产生和上面的$this->load->view()相同的结果 .你之所以要单独用这个函数也许是因为,你想在控制器的构造函数中设置一些全局变量,以使这些变量在任意函数调用的视图(view)里能够用上.你能多次调用这个函数.数组数据被缓存并被并入一个数组,用来转化成变量.

$this->load->get_var($key)

This function checks the associative array of variables available to your views. This is useful if for any reason a var is set in a library or another controller method using $this->load->vars().

$this->load->helper('file_name')

这个函数的作用是载入辅助函数, file_name 是辅助函数对应的文件名,不包括 _helper.php 扩展名。

$this->load->file('filepath/filename', true/false)

这是一个通用的文件载入函数。在第一个参数中给出文件所在的路径和文件名,对应的文件将会被打开。默认情况下,数据会被发送给浏览器,就如同视图文件一样,但如果你将第二个参数设置为 true (布尔型) 那么数据就会以字符串的形式被返回,而不是发送给浏览器。

$this->load->language('file_name')

这个函数是 语言加载函数: $this->lang->load() 的一个别名。

$this->load->config('file_name')

这个函数是 配置文件加载函数: $this->config->load() 的一个别名。

Application "Packages"

An application package allows for the easy distribution of complete sets of resources in a single directory, complete with its own libraries, models, helpers, config, and language files. It is recommended that these packages be placed in the application/third_party folder. Below is a sample map of an package directory

Sample Package "Foo Bar" Directory Map

The following is an example of a directory for an application package named "Foo Bar".

/application/third_party/foo_bar

config/
helpers/
language/
libraries/
models/

Whatever the purpose of the "Foo Bar" application package, it has its own config files, helpers, language files, libraries, and models. To use these resources in your controllers, you first need to tell the Loader that you are going to be loading resources from a package, by adding the package path.

$this->load->add_package_path()

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/');
$this->load->library('foo_bar');

$this->load->remove_package_path()

When your controller is finished using resources from an application package, and particularly if you have other application packages you want to work with, you may wish to remove the package path so the Loader no longer looks in that folder for resources. To remove the last path added, simply call the method with no parameters.

$this->load->remove_package_path()

Or to remove a specific package path, specify the same path previously given to add_package_path() for a package.:

$this->load->remove_package_path(APPPATH.'third_party/foo_bar/');

Package view files

By Default, package view files paths are set when add_package_path() is called. View paths are looped through, and once a match is encountered that view is loaded.

In this instance, it is possible for view naming collisions within packages to occur, and possibly the incorrect package being loaded. To ensure against this, set an optional second parameter of FALSE when calling add_package_path().

$this->load->add_package_path(APPPATH.'my_app', TRUE);
$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 TRUE

// Reset things
$this->load->remove_package_path(APPPATH.'my_app');

// Again without the second parameter:
$this->load->add_package_path(APPPATH.'my_app', TRUE);
$this->load->view('my_app_index'); // Loads
$this->load->view('welcome_message'); // Loads

 

翻译贡献者: cookieu, Hex, tg8866, weelia, Xwoder, yinzhili
最后修改: 2012-02-06 01:06:30
Previous article: Next article: