状态 草稿
Todo Update for 2.2 proofread
官方最后更新时间 2009/02/08 08:32

Kohana 类

The Kohana 类是 Kohana的核心,它加载了路由器,分发到控制器,并最终输出。

这个类为检索或设置相关的项目提供了静态方法:Configuration, Logging, User Agent

这个类的功能分别以前的Config,Log 和 User_Agent 类。

字符集设置

设置 utf-8 header。如果你想修改页面显示的字符集,修改之后浏览器会根据你设置的字符集显示相应的字符集文字。

// 简体中文的字符集为GB2312
// 国际化标准字符集为UTF-8
// 英语字符集iso-8859-1
header('Content-type: text/html; charset=iso-8859-1');

方法(Config)

调用 Config 文件工作。你可以系统运行中检索或者设置配置项。

配置项均包含在 config 的数组里面,使用 'group.key' (配置文件名.配置项的名字)的方式引用。

检索配置项

config($key, $slash = FALSE, $required = TRUE) 检索一个配置项。

  • [string] $key 指定配置的项参数。比如 'group_name.key_name'
  • [boolean] $slash 指定是否一个或必须被添加到配置项末尾。默认为 FALSE
  • [boolean] $required 指定是否配置项是必须的。默认为 TRUE
  • 返回 [mixed] $key 配置项的类型,或许是 stringbooleanarray
Kohana::config('core.output_compression'); //如果输出压缩已经被启用了则返回布尔型 TRUE。
//
Kohana::config('session.driver'); //返回当前加载 Session 驱动的字符串型的值。

设置配置项

config_set($key, $value) 设置配置项的值。

  • [string] $key 指定配置的项参数。比如 'group_name.key_name'
  • [mixed] $value 指定设置项的类型。或许是 stringarray
  • 如果成功添加返回 [boolean] TRUE,否则为 FALSE
Kohana::config_set('core.output_compression', FALSE); // 如果输出压缩已经被启用了则返回布尔型 TRUE。
//
Kohana::config_set('session.driver', 'cookie'); // 如果 Session 驱动设置没有设置 cookie 返回 FALSE。

加载配置文件

config_load($name, $required = TRUE) 从硬盘加载配置文件。

  • [string] $name 指定配置文件的名字(不包括路径信息)
  • [boolean] $required 指定加载文件是否为必须的,默认为 TRUE
  • 返回 [array] 配置文件的数据。
Kohana::config_load('locale');

清除缓存配置

config_clear($group) 从缓存配置中清除配置。

  • [string] $group 指定配置的名称。
  • 返回 [void]
Kohana::config_clear('locale');

获取 include 路径

include_paths($process = FALSE) 检索 included 文件路径。

  • [boolean] $process 指定 include_paths 是否重新激活,默认为 FALSE
  • 返回[array] 文件路径。 APPPATH 最先,MODPATH 其次,SYSPATH 垫底。
$ipaths = Kohana::include_paths();

方法(日志)

自定义日志。你可以在系统运行中记录(错误或者提示)信息到系统日志的当中。

添加日志信息

log($type, $message) 添加一个文本模式的信息到系统配置日志文件中。

  • [string] $type 指定日志类型: erroralertinfodebug
  • [string] $message 需要记录的日志信息。
  • 返回 [void]
Kohana::log('error', "email $email_id 没有发送");
//
Kohana::log('info', '$user 用户登录成功');

保存所有日志记录

log_save() 保存当前所有记录的信息到系统配置日志文件中。 通常不需要手动调用。

  • 返回 [void]
Kohana::log_save();

日志目录

log_directory($dir = NULL) 设置或检索日志目录。

  • [string] $dir 指定新的目录来记录日志文件。默认为 NULL
  • 如果 $dirNULL 则返回当前日志目录的 [string] ,否则返回指定 $dir 目录。
Kohana::log_directory();

方法(其他)

初始化并加载 Kohana 超对象

加载控制器并初始化。运行 pre_controller,post_controller_constructor 和 post_controller 事件。当路由不能映射到控制器时触发 system.404 事件。

Kohana::instance();
 
// 举例:加载 input->get() 方法
Kohana::instance()->input->get('id');

调试信息

返回 HTML 格式的的变量信息。

echo Kohana::debug($this->input->post());

输出 POST 变量信息。

向后追踪

当发生错误的时候。它显示文件的概述和调用的函数可能出错的地方,调试时会有很大的帮助。

使用语言字符串

显示使用 Kohana::lang() 语言字符串的语言。

实例

echo Kohana::lang('cache.resources');
 
// 设置为 en_US 显示下面信息:
 
// Caching of resources is impossible, because resources cannot be serialized.
 
// 设置为de_DE 显示下面信息:
 
// Das Cachen von Ressourcen ist nicht möglich, da diese nicht serialisiert werden können.

如果设置为 en_USKohana::lang('cache.resources') 会映射到 i18n/en_US/cache.php 文件并找到 $lang['resources'] 配置项。

Kohana 还允许额外的参数到 Kohana::lang(),同时运行我们去使用格式化后的字符串(在 php sprintf function 使用指定字符串格式化)。

实例 i18n 某语言包的 myapp.php:

$lang = array
(
  'kohana_release' => 'The last stable release of Kohana is %s'
)

控制器,视图,模型…

echo Kohana::lang('myapp.kohana_release', '2.3.1');
 
//或
 
echo Kohana::lang('example.kohana_release', array('2.3.1'));

搜索关键字符串

在嵌套数组搜索关键字时需要:

  • [string] 搜索的关键字。 Should be in form of 'rootnode.childnode.anothernode'
  • [array] 搜索的数组返回。 Should be an array of values and/or another arrays to represent nodes

实例

$a = array
(
    'levelone1' => array
    (
        'leveltwo1' => array
        (
            'a' => 'aaa',
            'b' => 'aab',
            'c' => 'aac'
        ),
 
        'leveltwo2' => array
        (
            'a' => 'aba',
            'b' => 'abb',
            'c' => 'abc'
        )
    ),
    'levelone2' => array
    (
        'a' => 'ba',
        'b' => 'bb',
        'foo' => 'bar'
    )
);
 
Kohana::key_string('levelone1.leveltwo1.b', $a);
//返回 'aab'
Kohana::key_string('levelone1.leveltwo2.c', $a);
//返回 'abc'
Kohana::key_string('levelone2.foo', $a);
//返回 'bar'

文件列表

遍历指定名字的所有目录,并返回找到的文件。这里有两个参数:

  • [string] 选择搜索目录的名字
  • [bool] 寻找文件是否递归?(TRUEFALSE,默认为 FALSE

以数组的形式返回找到文件的文件路径。

实例

$controllers = Kohana::list_files('controllers', TRUE);
// 现在 $controllers 是一个包括在 Kohana 系统中所有控制气的路径数组。、

寻找文件

使用 Kohana 的级联文件系统查找指定目录下的资源文件。

  • [string] 搜索的目录名
  • [string] 搜索的文件名(如果第四个参数设置为TRUE则需要加入后缀)
  • [bool] 文件是否是必须的。如果为为 TRUE 并且没有找到文件则抛出异常。
  • [bool] 使用自定义的文件后缀,TRUEFALSE(默认为 FALSE

如果类型是 i18n 或者是一个配置文件返回数组,当文件找到返回文件的路径。如果没有找到文件返回 FALSE。

这个方法是用 Kohana 的级联文件系统,这就意味着如果文件存在方法会首先搜索 application 目录。然后检查在 config.php 文件制定的所有模型文件搜索,最后为 system 目录。对于 i18n 文件和 配置文件例外,它们是从系统目录之上加载。结果使得你从 system 目录复制了一半的语言文件并将其放置在 application 目录,application 目录声明变量会替代在 system 目录声明的变量。

实例

// 在 'controllers' 目录下搜索 'article.php' 文件
include (Kohana::find_file('controllers','article'));

实例

// 在 'config' 目录寻找文件:'database.php'
include (Kohana::find_file('config','database'));

实例

// 在 'vendor' 的子目录  'swift' 下面寻找文件:'Swift.php'
include (Kohana::find_file('vendor','swift/Swift'));

user agent 信息

'user_agent' 返回当前用户的user agent 信息:

  • [string] 关键字或者测试名,默认为 'agent'。

可用的关键字: agent, browser, version, platform, mobile, robot, referrer, languages, charsets.

可用的测试名: is_browser, is_mobile, is_robot, accept_lang, accept_charset.

  • [string] 如果使用“accept” 测试名和包含字符串比较: user_agent('accept_lang', 'en)

注意!如果开启的全局的 XSS 过滤,这个函数返回的数据则不会被过滤!

实例

print Kohana::user_agent();
print Kohana::user_agent('browser');
print Kohana::user_agent('version');
print Kohana::user_agent('platform');
 
print Kohana::user_agent('is_browser');
print Kohana::user_agent('accept_lang', 'en');

返回的信息:

Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9) Gecko/2008052906 Firefox/3.0
Firefox
3.0
Windows XP
 
1 // (bool) true
1 // (bool) true
core/kohana.txt · 最后更改: 2009/02/08 17:47 由 icyleaf