用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4501|回复: 3
收起左侧

CI 控制器能使用类内部全局变量吗?

[复制链接]
发表于 2010-6-19 13:44:30 | 显示全部楼层 |阅读模式
最近要用到ajax 提交大量数据到 一个 CI控制器的函数(方法),然后成功后在转到此方法,但是 之前post 上来的数据都没有了!

所以我想用一种方法暂存这些数据,session 类有长度限制,而且对于数组的存储特别麻烦。 最好的方法就是给这个控制器类定义一个内部全局变量!

我试了,还是不行,第一次调用方法,将post上来的数据赋值给这个变量,第二次调用方法,从这个变量取回 数据,但是失败了!!

问题在哪里呀,或者有什么更好的方法吗?

PHP复制代码
private $purchase_session = array();
 
function test()
{
        if(!empty($_POST))
                {
                        $product_ = array();
                        foreach($_POST as $key=>$val){
                                $val=$this->input->post($key);                                                          $product_[preg_replace('/^[a-z]+_(\d{1,2}$)/','$1',$key)][preg_replace('/(^[a-z]+)_\d{1,2}$/','$1',$key)] = $val;      
                               
                        }
 
                        $this->purchase_session = $product_;
                }
                else
                {
                        $data['purchase'] = $this->purchase_session;
                }
 
}
复制代码
发表于 2010-6-19 17:37:57 | 显示全部楼层
你的想法是不可能实现的,这是 PHP 的运行机制限制的,也就是每次请求都会初始化、释放所有资源。
只能通过 session、数据库、memcached 等持久化工具和机制才能实现。
POST 过来数据了,为什么不入库?数据库都是摆设吗。。。。
发表于 2010-6-19 20:27:48 | 显示全部楼层
建议先看php基础
 楼主| 发表于 2010-6-20 12:32:45 | 显示全部楼层
谢谢!现在想通了!
我是看到其他类的 如下 调用方法才有了如此“幻想”,见笑!
PHP复制代码
$class_ = new class();
$class_->value = 123;
$class_->function();
echo $class_->value;
复制代码

本版积分规则