是否可以使用钩类的库?
问题描述:
我正在使用钩子调用在调用控制器之前执行的类。是否可以使用钩类的库?
$hook['pre_controller'] = array(
'class' => 'CargarInformacion',
'function' => 'obtenerInfo',
'filename' => 'CargarInformacion.php',
'filepath' => 'hooks',
'params' => ''
);
这是类
class CargarInformacion
{
function obtenerInfo()
{
$ci = &get_instance();
$informacion = $ci->db->get('sitio', 1)->row();
}
}
但我总是得到同样的错误
试图让非对象的属性
我知道有成千上万的答案,但直到现在我还没有找到合适的答案。
答
随着笨文档提供,
pre_controller
立即调用之前,你的任何控制器被调用。所有基类,路由和安全检查已完成 。
这就是为什么你不能在pre_controller
hook中访问CI超级对象的引用。你可以通过这样做来测试它。
$hook['pre_controller'] = array(
'class' => 'CargarInformacion',
'function' => 'obtenerInfo',
'filename' => 'CargarInformacion.php',
'filepath' => 'hooks',
'params' => 'pre'
);
$hook['post_controller_constructor'] = array(
'class' => 'CargarInformation',
'function' => 'obtenerInfo',
'filename' => 'CargarInformation.php',
'filepath' => 'hooks',
'params' => 'post'
);
在CargarInformation.php,
class CargarInformation {
function __construct($foo = null) {
$this->CI =& get_instance();
}
function obtenerInfo($param)
{
echo $param;
echo "<pre>";
print_r($this->CI);
echo "</pre>";
}
}
因此,尝试,如果你想获得访问CI超级的参考,但控制器的任何方法调用发生前使用post_controller_constructor
代替。
希望它对你有用。