用户
 找回密码
 入住 CI 中国社区
搜索
查看: 8210|回复: 6
收起左侧

求教如何使用钩子hooks实现静态化.

[复制链接]
发表于 2008-9-8 21:54:46 | 显示全部楼层 |阅读模式
我想取得最终输出数据 保存到文件 从而实现静态化..
我定义了一个钩子在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 编辑 ]
 楼主| 发表于 2008-9-8 21:55:59 | 显示全部楼层
使用'display_override'钩子也是一样什么都不输出...
 楼主| 发表于 2008-9-8 22:10:54 | 显示全部楼层
发现问题了....钩子这里类没有执行构造函数....导致CI未被引用赋值..
发表于 2008-9-9 10:41:44 | 显示全部楼层
钩子我还真没应用过,我觉得你可以自己写类库来做这件事吧,直接取视图数据就好了。
 楼主| 发表于 2008-9-9 18:33:58 | 显示全部楼层
原帖由 Hex 于 2008-9-9 10:41 发表
钩子我还真没应用过,我觉得你可以自己写类库来做这件事吧,直接取视图数据就好了。


覆盖掉display()取get_output是可以..
不过在每个控制器里面这样静态好像挺累....
想用钩子来统一管理需要静态的部分....
慢慢实现....
发表于 2008-9-9 18:44:14 | 显示全部楼层
你也可以用 MY_Controller 的方式来自动处理。
发表于 2009-2-17 11:44:29 | 显示全部楼层
发现问题了....钩子这里类没有执行构造函数....导致CI未被引用赋值..
xjflyttp 发表于 2008-9-8 22:10

为什么没有执行__construct呢?
我看在CI_Hook的实现里, function _run_hook($data)    中是这样调用的
$HOOK = new $class;  
$HOOK->$function($params);  

它的确是通过new来生成对象的,没理由不执行__construct吧。能详细谈下你的解决方法吗?

本版积分规则