xiaochong0302 发表于 2009-9-9 17:15:19

引入全局缓存的问题

比方说我要引入网站的配置文件cache_category_helper.php, 因为各个地方都要用到,所有准备autoload加载, 此文件放在application/helpers下,文件内容如下,就是个数组
$category = array (
      0 =>
      array (
      'cate_name' => 'cn Leawo DVD23GP',
      'setup_filename' => 'ddd',
      ),
      1 =>
      array (
      'cate_name' => 'cn Leawo DVD23GP',
      'setup_filename' => '',
      ),
      2 =>
      array (
      'cate_name' => 'cn Leawo DVD2AVI',
      'setup_filename' => '',
      ),
      3 =>
      array (
      'cate_name' => 'cn Leawo DVD2iPhone',
      'setup_filename' => '',
      ),

    );

$this->load->helper('cache_category');
print_r($category);
报错:Message:Undefined variable: category

我直接引入该文件
include APPPATH. 'helpers/cache_category_helper.php';
print_r($category);
没有问题

把上面的数组装成一个函数
function category(){
$category = array (
      0 =>
      array (
      'cate_name' => 'cn Leawo DVD23GP',
      'setup_filename' => 'ddd',
      ),
      1 =>
      array (
      'cate_name' => 'cn Leawo DVD23GP',
      'setup_filename' => '',
      ),
      2 =>
      array (
      'cate_name' => 'cn Leawo DVD2AVI',
      'setup_filename' => '',
      ),
      3 =>
      array (
      'cate_name' => 'cn Leawo DVD2iPhone',
      'setup_filename' => '',
      ),

    );
    return $category;
}
$this->load->helper('cache_category');
print_r($category);
没有问题

$this->load->heper();也是include 为何和直接的incldue 不一样呢?
需要做何调整?

Hex 发表于 2009-9-9 17:55:26

应该用全局关键字声明一下,再使用。
最好用 CI 的 config 类来做这件事。

kazaff 发表于 2009-9-9 18:21:59

恩,如果你是为了更好的可读性和遵循规范,就应该用CONFIG类来做

visvoy 发表于 2009-9-9 18:27:25

这是php基础呀,函数里面include的变量作用域仅限此函数内,->helper()里面加载的$category,在其外部怎么能引用呢?作用域不同

ruby_on_rails 发表于 2009-12-1 17:08:01

最好用 CI 的 config 类来做这件事?
怎么用呢!能举个例子吗
我也遇到同样的问题

Hex 发表于 2009-12-1 19:03:37

参考 http://codeigniter.org.cn/user_guide/libraries/config.html
页: [1]
查看完整版本: 引入全局缓存的问题