Codeigniter:如何在我的控制器的构造函数中加载钩子中定义的常量

时间:2011-08-19 00:26:35

标签: codeigniter php

问题: 我已经在我的钩子中定义了一些常量但是我无法在我的子类控制器构造函数中访问它们。

代码: A - 钩子类:

class Settings extends CI_Hooks {

    public function load_settings() {
        $CI =& get_instance();
        $CI->load->model('hooks/settings_model');
        $data = $CI->settings_model->load_settings();
        define('MEMBERS_PER_PAGE', $data['members_per_page']);
        define('REGISTER_ENABLED', $data['register']);
        define('SITE_ACCESS_ENABLED', $data['site_access']);
        define('ADMIN_EMAIL', $data['admin_email']);
    }

}

B - 钩子配置:

$hook['post_controller_constructor'] = array(
                                'class'    => 'settings',
                                'function' => 'load_settings',
                                'filename' => 'settings.php',
                                'filepath' => 'hooks'
                                );

C - 控制器

class MY_Controller extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();
        defined('SITE_ACCESS_ENABLED') ? print SITE_ACCESS_ENABLED : print "NULL";
    }
}

我理解的方式* post_controller_constructor *是在初始化控制器之后但在执行构造函数之前加载的。显然我定义的常量在任何构造函数中都不起作用,而 config / constants.php 中的常量确实有效。

非常感谢任何帮助和见解,因为钩子对我来说是全新的。

1 个答案:

答案 0 :(得分:0)

那么,post_controller_constructor恰好就此发生了。构造函数构造完控制器之后: - )。

你需要在pre_controller触发它并自己管理模型的实例化,否则你必须等到控制器的方法被调用才能访问这些值。遗憾。