| 状态 | 草稿 |
|---|---|
| Todo | Update for 2.2 proofread |
| 官方最后更新时间 | 2009/02/08 08:32 |
The Kohana 类是 Kohana的核心,它加载了路由器,分发到控制器,并最终输出。
这个类的功能分别以前的Config,Log 和 User_Agent 类。
设置 utf-8 header。如果你想修改页面显示的字符集,修改之后浏览器会根据你设置的字符集显示相应的字符集文字。
// 简体中文的字符集为GB2312 // 国际化标准字符集为UTF-8 // 英语字符集iso-8859-1 header('Content-type: text/html; charset=iso-8859-1');
调用 Config 文件工作。你可以系统运行中检索或者设置配置项。
配置项均包含在 config 的数组里面,使用 'group.key' (配置文件名.配置项的名字)的方式引用。
config($key, $slash = FALSE, $required = TRUE) 检索一个配置项。
$key 指定配置的项参数。比如 'group_name.key_name'$slash 指定是否一个或必须被添加到配置项末尾。默认为 FALSE$required 指定是否配置项是必须的。默认为 TRUE$key 配置项的类型,或许是 string,boolean 或 arrayKohana::config('core.output_compression'); //如果输出压缩已经被启用了则返回布尔型 TRUE。 // Kohana::config('session.driver'); //返回当前加载 Session 驱动的字符串型的值。
config_set($key, $value) 设置配置项的值。
$key 指定配置的项参数。比如 'group_name.key_name'$value 指定设置项的类型。或许是 string 或 arrayTRUE,否则为 FALSE。Kohana::config_set('core.output_compression', FALSE); // 如果输出压缩已经被启用了则返回布尔型 TRUE。 // Kohana::config_set('session.driver', 'cookie'); // 如果 Session 驱动设置没有设置 cookie 返回 FALSE。
config_load($name, $required = TRUE) 从硬盘加载配置文件。
$name 指定配置文件的名字(不包括路径信息)$required 指定加载文件是否为必须的,默认为 TRUEKohana::config_load('locale');
config_clear($group) 从缓存配置中清除配置。
$group 指定配置的名称。Kohana::config_clear('locale');
include_paths($process = FALSE) 检索 included 文件路径。
$process 指定 include_paths 是否重新激活,默认为 FALSEAPPPATH 最先,MODPATH 其次,SYSPATH 垫底。$ipaths = Kohana::include_paths();
自定义日志。你可以在系统运行中记录(错误或者提示)信息到系统日志的当中。
log($type, $message) 添加一个文本模式的信息到系统配置日志文件中。
$type 指定日志类型: error,alert,info,debug$message 需要记录的日志信息。Kohana::log('error', "email $email_id 没有发送"); // Kohana::log('info', '$user 用户登录成功');
log_save() 保存当前所有记录的信息到系统配置日志文件中。 通常不需要手动调用。
Kohana::log_save();
log_directory($dir = NULL) 设置或检索日志目录。
$dir 指定新的目录来记录日志文件。默认为 NULL$dir 为 NULL 则返回当前日志目录的 [string] ,否则返回指定 $dir 目录。Kohana::log_directory();
加载控制器并初始化。运行 pre_controller,post_controller_constructor 和 post_controller 事件。当路由不能映射到控制器时触发 system.404 事件。
Kohana::instance(); // 举例:加载 input->get() 方法 Kohana::instance()->input->get('id');
当发生错误的时候。它显示文件的概述和调用的函数可能出错的地方,调试时会有很大的帮助。
显示使用 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_US,Kohana::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'));
在嵌套数组搜索关键字时需要:
实例
$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'
遍历指定名字的所有目录,并返回找到的文件。这里有两个参数:
TRUE 或 FALSE,默认为 FALSE)以数组的形式返回找到文件的文件路径。
实例
$controllers = Kohana::list_files('controllers', TRUE); // 现在 $controllers 是一个包括在 Kohana 系统中所有控制气的路径数组。、
使用 Kohana 的级联文件系统查找指定目录下的资源文件。
TRUE则需要加入后缀)TRUE 并且没有找到文件则抛出异常。TRUE 或 FALSE(默认为 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 信息:
可用的关键字: agent, browser, version, platform, mobile, robot, referrer, languages, charsets.
可用的测试名: is_browser, is_mobile, is_robot, accept_lang, accept_charset.
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