求教如何使用钩子hooks实现静态化.
我想取得最终输出数据 保存到文件 从而实现静态化..我定义了一个钩子在hooks.php
$hook['cache_override'][] = array(
'class' => 'staticCache',
'function' => 'displayCache',
'filename' => 'staticCache.php',
'filepath' => 'hooks',
'params' => ''
);
一个名为staticCache.php的类
<?php
class staticCache {
private $CI;
public function __construct() {
//
$this->CI =& get_instance();
}
public function displayCache() {
echo strlen($this->CI->output->get_output());
}
}
?>
$config['enable_hooks'] = TRUE;
打开页面什么都没有....是不是我这个类处理得不对...
手册页没有给出实例...感谢指点
[ 本帖最后由 xjflyttp 于 2008-9-8 22:09 编辑 ] 使用'display_override'钩子也是一样什么都不输出... 发现问题了....钩子这里类没有执行构造函数....导致CI未被引用赋值.. 钩子我还真没应用过,我觉得你可以自己写类库来做这件事吧,直接取视图数据就好了。 原帖由 Hex 于 2008-9-9 10:41 发表 http://codeigniter.org.cn/forums/images/common/back.gif
钩子我还真没应用过,我觉得你可以自己写类库来做这件事吧,直接取视图数据就好了。
覆盖掉display()取get_output是可以..
不过在每个控制器里面这样静态好像挺累....
想用钩子来统一管理需要静态的部分....
慢慢实现.... 你也可以用 MY_Controller 的方式来自动处理。 发现问题了....钩子这里类没有执行构造函数....导致CI未被引用赋值..
xjflyttp 发表于 2008-9-8 22:10 http://codeigniter.org.cn/forums/images/common/back.gif
为什么没有执行__construct呢?
我看在CI_Hook的实现里, function _run_hook($data) 中是这样调用的
$HOOK = new $class;
$HOOK->$function($params);
它的确是通过new来生成对象的,没理由不执行__construct吧。能详细谈下你的解决方法吗?
页:
[1]