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

Controller 中不同的函数如何访问 类的 public 变量

[复制链接]
发表于 2013-5-9 09:22:54 | 显示全部楼层 |阅读模式
论坛朋友们好,我刚学习CI 遇到一个问题:

我在某个 controller 中定义了一个 Public 的变量, 在第一个方法中,获得了我从表单中post了个值,赋值给了  public 变量$InputString,之后输出确实成功被修改了。

在第二个方法中,我需要用到 $InputString 的值,但是实际上,我访问 第二个方法 output 时,没法获得,得到的是 $InputString 为空值。

请问如何在 controller 的不同函数 在类中 共同都能够访问某些变量? 谢谢。

class Test extends CI_Controller {

    function __construct() {
        parent::__construct();
        $this->load->helper('form');
    }

    public $InputString = "";

    function input() {
        $this->InputString = $this->input->post('quickSearch‘);
    }
   
    function output(){
        echo ($this->InputString);   
    }

}
发表于 2013-5-9 10:20:15 | 显示全部楼层
你可以在core下建一个类作为你这些类的父类,例如MY_parentcls,那么这个MY_parentcls就继承CI_Controller,你建立的控制器就继承这个MY_parentcls
 楼主| 发表于 2013-5-9 10:26:04 | 显示全部楼层
terminus 发表于 2013-5-9 10:20
你可以在core下建一个类作为你这些类的父类,例如MY_parentcls,那么这个MY_parentcls就继承CI_Controller,你 ...

谢谢楼上的回答。可能我表述不够清楚,我不是要在不同的类之间传递变量,而是希望 controller 类的不同成员方法能访问类自身的成员变量。

例如上面代码中,我通过 input()方法已经设置了 成员变量的内容,但用 output 方法却访问不到该变量。
 楼主| 发表于 2013-5-9 10:26:47 | 显示全部楼层
terminus 发表于 2013-5-9 10:20
你可以在core下建一个类作为你这些类的父类,例如MY_parentcls,那么这个MY_parentcls就继承CI_Controller,你 ...

谢谢楼上的回答。可能我表述不够清楚,我不是要在不同的类之间传递变量,而是希望 controller 类的不同成员方法能访问类自身的成员变量。

例如上面代码中,我通过 input()方法已经设置了 成员变量的内容,但用 output 方法却访问不到该变量。
发表于 2013-5-9 10:43:21 | 显示全部楼层
楼主是想跨请求传递数据吧?
控制的不同方法,在跨请求后肯定是拿不到数据了,这是 PHP 运行方式的限制。
想拿到数据可以用 session 或者数据库等方式。
 楼主| 发表于 2013-5-9 20:01:06 | 显示全部楼层
Hex 发表于 2013-5-9 10:43
楼主是想跨请求传递数据吧?
控制的不同方法,在跨请求后肯定是拿不到数据了,这是 PHP 运行方式的限制。
...

是的。 Hex果然大神啊,我是想2次请求拿同一个数据。

是不是PHP的每次请求就相当于把 页面的类重新 ”实例化“一次?对吧
发表于 2013-5-10 14:22:26 | 显示全部楼层
sharp_c 发表于 2013-5-9 20:01
是的。 Hex果然大神啊,我是想2次请求拿同一个数据。

是不是PHP的每次请求就相当于把 页面的类重新 ”实 ...

是的,PHP的执行方式就是每次请求都初始化->运行->清理,所以请求完毕内存就清除了。
想请求之间共享数据,一般用数据库,或者Session等。
发表于 2014-5-8 21:09:11 | 显示全部楼层
帮你顶一下吧

本版积分规则