sharp_c 发表于 2013-5-9 09:22:54

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

论坛朋友们好,我刚学习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);   
    }

}

terminus 发表于 2013-5-9 10:20:15

你可以在core下建一个类作为你这些类的父类,例如MY_parentcls,那么这个MY_parentcls就继承CI_Controller,你建立的控制器就继承这个MY_parentcls

sharp_c 发表于 2013-5-9 10:26:04

terminus 发表于 2013-5-9 10:20 static/image/common/back.gif
你可以在core下建一个类作为你这些类的父类,例如MY_parentcls,那么这个MY_parentcls就继承CI_Controller,你 ...

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

例如上面代码中,我通过 input()方法已经设置了 成员变量的内容,但用 output 方法却访问不到该变量。

sharp_c 发表于 2013-5-9 10:26:47

terminus 发表于 2013-5-9 10:20 static/image/common/back.gif
你可以在core下建一个类作为你这些类的父类,例如MY_parentcls,那么这个MY_parentcls就继承CI_Controller,你 ...

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

例如上面代码中,我通过 input()方法已经设置了 成员变量的内容,但用 output 方法却访问不到该变量。

Hex 发表于 2013-5-9 10:43:21

楼主是想跨请求传递数据吧?
控制的不同方法,在跨请求后肯定是拿不到数据了,这是 PHP 运行方式的限制。
想拿到数据可以用 session 或者数据库等方式。

sharp_c 发表于 2013-5-9 20:01:06

Hex 发表于 2013-5-9 10:43 static/image/common/back.gif
楼主是想跨请求传递数据吧?
控制的不同方法,在跨请求后肯定是拿不到数据了,这是 PHP 运行方式的限制。
...

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

是不是PHP的每次请求就相当于把 页面的类重新 ”实例化“一次?对吧

Hex 发表于 2013-5-10 14:22:26

sharp_c 发表于 2013-5-9 20:01 static/image/common/back.gif
是的。 Hex果然大神啊,我是想2次请求拿同一个数据。

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

是的,PHP的执行方式就是每次请求都初始化->运行->清理,所以请求完毕内存就清除了。
想请求之间共享数据,一般用数据库,或者Session等。

wwwhx110com 发表于 2014-5-8 21:09:11

帮你顶一下吧
页: [1]
查看完整版本: Controller 中不同的函数如何访问 类的 public 变量