0

I have some data in array format which I wrote to a file in application/cache folder. Format is:

$extra_data['some_key'] = 'some_data';

It is not directly about site config so I don't want to put it in application/config. Yet, in some cases, I need to reach this $extra_data inside the controller or model.

What I do is,

1) define variable in controller

class pages_model extends CI_Model
{
  var $extra_data;

2) inclulde the cache file and associate it with above variable,

  function __construct()
  {
     parent::__construct();
     @include_once APPPATH . "cache/extra_data.php";
     $this->extra_data = $extra_data;
  }

3) get the class variable as variable then use it:

function func_name()
{
  $extra_data = $this->extra_data;

This is the way I am using, but I am not sure that it is the correct or efficient way.

Thanks for any idea and suggesstion.

4

2 に答える 2

1

Loader ライブラリを cache() で拡張するのはどうですか?

次に、次のように呼び出すことができます。

$this->load->cache('extra_data');

ライブラリ/MY_Loader.php

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class MY_Loader extends CI_Loader {

    /* Load custom cache values */
    function cache($str = '') {

        $CI =& get_instance();

        $data = array();
        $path = APPATH . "cache/{$str}.php";
        if (file_exists($path)) {

            include $path;
            $data = $extra_data;

        }

        $CI->$str = $data;

    }

}

于 2012-05-28T13:39:17.427 に答える
0

config フォルダーに cache.php というファイルを作成して、このようなデータを入れてください。

$config['some_key'] = 'some_data';

次に、このコードを構成で使用できます

    $this->load->config('cache', TRUE);
    $extra_data = $this->config->item('cache')

設定ではないことは知っていますが、それらを別のファイルに配置しているため、それらを使用する方が良いでしょう

于 2012-05-28T12:57:55.603 に答える