如何在Codeigniter中从库中访问Controller中声明的静态变量?

时间:2017-12-27 10:14:04

标签: php codeigniter codeigniter-3 static-variables

我想访问Codeigniter Controller中声明的静态变量,我想在库中使用它。这是代码。

控制器位置&名称:

姓名:Console

地点:./application/controllers/Console.php

图书馆位置&名称:

姓名:Api

地点:./applications/libraries/Api.php

Console.php

class Console extends CI_Controller {

    public static $access_agents = [
        '2017_app_v1.0',
        '2017_api_v1.0'
    ];

    public static $developer_secret = [
        'HTTP_X_DEVELOPER_SECRET' => 'XYZ'
    ];

}

Api.php

class Api
{

    public static $CI;

    public function __construct()
    {
        self::$CI = & get_instance();
    }

    public static function print_services_list($list)
    {
        if(self::get_custom_header(##### CALL_STATIC_VARIABLE_HERE ######))
        $array = [
            'status' => '200',
            'message' => 'OK',
            'text' => "List of APIs under this Interface gateway.",
            'data' => $list
        ];
        self::print_json_array($array);
    }
}

正如我所描述的,我想访问在Console类中声明的静态变量到我使用##### CALL_STATIC_VARIABLE_HERE ######

的地方

我尝试过这样的事情:(我知道它可能不起作用,我是对的)

Console::$developer_secret - 不工作

self::$CI->Console::$developer_secret - 不工作

self::$CI->Console->$developer_secret - 不工作

1 个答案:

答案 0 :(得分:0)

为什么不将这些变量放在配置文件中?

application/config文件夹中创建一个PHP文件。无论你想要什么,都可以命然后将变量放在文件中,如下所示。

<?php
$config['static_var']['your-static-variable-name'] = 'Whatever value you want to initialize'

如果您想添加另一个变量

<?php
    $config['static_var']['your-another-static-variable-name'] = 'Whatever value you want to initialize'

保存文件后,请在库中加载配置文件。

class Api
{
    protected $CI;
    protected $my_var;
    protected $my_another_var;

    public function __construct()
    {
         $this->CI =& get_instance();
         $this->CI->load->config('your config file name');
         $this->my_var = $this->CI->config->item('your-static-variable-name','static_var');
         $this->my_another_var = $this->CI->config->item('your-another-static-variable-name','static_var');
    }
}

现在可以在任何地方使用$myvar。希望这可以帮到你。