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

しかし、私はいつも同じエラーが発生します

非オブジェクトのプロパティを取得しようとしています

何千もの答えが実現していることは知っていますが、今まで正しい答えを見つけられませんでした.

4

1 に答える 1

1

codeigniter doc が提供するように、

プリコントローラー

コントローラーが呼び出される直前に呼び出されます。すべての基本クラス、ルーティング、およびセキュリティ チェックが完了しています。

そのため、フック内の CI スーパーオブジェクトの参照にアクセスできませんpre_controller。こんな感じでテストできます。

$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>";
    }
}

したがって、post_controller_constructorCI スーパーオブジェクトの参照にアクセスしたいが、コントローラー呼び出しのメソッドが発生する前に、代わりに使用してみてください。

お役に立てば幸いです。

于 2015-04-03T06:04:47.807 に答える