2015-04-03 95 views
1

我正在使用鉤子調用在調用控制器之前執行的類。是否可以使用鉤類的庫?

$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(); 
    } 
} 

但我總是得到同樣的錯誤

試圖讓非對象的屬性

我知道有成千上萬的答案,但直到現在我還沒有找到合適的答案。

回答

1

隨着笨文檔提供,

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代替。

希望它對你有用。