状态 草稿
Todo More examples, proof read
官方最后更新时间 2009/02/06 05:06

钩子(Hooks)

钩子(Hooks)同样是在 Kohana 初期加载的基文件,更具体说 它们是在 Kohana::setup() 方法中加载。所以它们的方法可以用在下面的文件中:

  • index.php
  • core/Bootstrap.php
  • core/Benchmark.php
  • core/utf8.php
  • core/Event.php
  • core/Kohana.php

如果没有事件启动,那么第一个启动的是 system.ready

钩子文件应该放在 application/hooks 目录下面或者相似的模型目录下面。

配置钩子

打开 application/config directory 目录下的 config.php 编辑钩子,例如:

文件: config.php

$config['enable_hooks'] = FALSE;

设置 $config['enable_hooks']TRUE ,所有在钩子目录(application/hooks)的文件都会被包含并等待执行。

实例 config.php

// 加载 application/hooks 目录的所有文件
$config['enable_hooks'] = TRUE;

钩子和事件

钩子的强大主要来自于 事件(Events) 类。钩子在任何的事件开始之前被加载,这就意味着你可以使用钩子去修改事件的回调。比如加载下面的文件作为一个钩子。

实例 hooks/power.php

class Power {
 public function Kohana(){
   Event::$data = Event::$data.'<!-- Powered by Kohana-->';
 }
 
}
Event::add('system.display', array('Power', 'Kohana'));

这个将会添加一个回调到 system.display 事件之中。回调是到方法 Power::KohanaPower::Kohana 会在每个页面添加一个小的提示(<!– Powered by Kohana–>)。它利用可了 Event::$data 方法来控制最终的输出。详情请参阅 Events

常量

当你使用钩子的时候或许你会需要下面 Kohana 系统的钩子。钩子的这些常量会在 index.php 文件中被加载:

  • EXT - Kohana 中包含的默认文件扩展名,默认的是 '.php'。
  • KOHANA - 系统根目录(basename)
  • DOCROOT - 目录名(dirname)
  • APPPATH - application 文件夹的路径
  • SYSPATH - system 文件夹的路径
  • MODPATH - modules 文件夹的路径
general/hooks.txt · 最后更改: 2009/02/08 18:01 由 icyleaf