oliverzhy 发表于 2011-6-13 12:53:11

函数间的变量传递问题

好, CI 新手, 有问题请教, 谢。

有这里一个控制器,

class abc extends CI_Controller {

   function xxxx()
    { $abc = 'asdasdf'; }

    function yyyy()
    { $ccc = $abc + 3333;}
}

}

以上是一个demo, 简单的意思就是在xxxx函数中有一个变量 $abc, 现在在yyyy这个函数中需要他的值, 这个如何处理?
除了存到Session里面的方法外,还有其他的方法吗?

用了 $this-> abc; 并且把abc也初始化了,貌似也不行。

谢谢

jeongee 发表于 2011-6-13 13:01:10

你要是这样的话,你得在构造函数中初始化

zhouli520 发表于 2011-6-13 13:11:46

class abc extends CI_Controller {
private $abc;
   function abc()
    { parent::__contruct();
$this->abc=123;
}

    function yyyy()
    { $ccc = $this->abc + 3333;}
}

spt119 发表于 2011-6-13 16:52:30

本帖最后由 spt119 于 2011-6-13 16:54 编辑

直接在函数中调用function yyyy()即可。
但前提是需要在yyyy()中设置一个适合的return。
类似这样。

class abc extends CI_Controller {

   function xxxx()
    { $abc = 'asdasdf'; $你的变量 = $abc + $this->yyyy();}

    function yyyy()
    { $ccc = $abc + 3333;return $ccc;}
}

}

oliverzhy 发表于 2011-6-13 22:08:16

spt119 发表于 2011-6-13 16:52 static/image/common/back.gif
直接在函数中调用function yyyy()即可。
但前提是需要在yyyy()中设置一个适合的return。
类似这样。


晓得了, 一会试。

谢谢

oliverzhy 发表于 2011-6-13 22:10:25

zhouli520 发表于 2011-6-13 13:11 static/image/common/back.gif
class abc extends CI_Controller {
private $abc;
   function abc()


抱歉,可能没有说清楚。

这个变量不能初始, 因为是form提交过来的一些数据。

Hex 发表于 2011-6-14 00:46:04

oliverzhy 发表于 2011-6-13 22:10 static/image/common/back.gif
抱歉,可能没有说清楚。

这个变量不能初始, 因为是form提交过来的一些数据。 ...

做一个类的中间变量,比如 $this->a1, $this->a2 等等,存储你的 form 数据,然后就可以类里共享了。
如果要跨类,就只能是全局变量了。

oliverzhy 发表于 2011-6-14 01:44:39

Hex 发表于 2011-6-14 00:46 static/image/common/back.gif
做一个类的中间变量,比如 $this->a1, $this->a2 等等,存储你的 form 数据,然后就可以类里共享了。
如 ...

Hi,

中间变量 我做了一个,
class abc extends CI_Controller
{
    var $abcd = array();

    function aaaa()
    {
      $this->abcd = array('a', '2','b');
    }
    function bbbb()
    {
      var_dump($this->abcd);
    }
}

访问http://localhost/abc/aaaa 之后,再次访问http://localhost/abc/bbbb

但是输出是 array(0)

奇怪, 中间变量是这样的定义的吗? 还是我的思路错了?

zhouli520 发表于 2011-6-14 09:56:15

oliverzhy 发表于 2011-6-14 01:44 static/image/common/back.gif
Hi,

中间变量 我做了一个,


function bbbb()
    {
      $this->aaaa();
      var_dump($this->abcd);
    }

直接访问bbbb就有了

Hex 发表于 2011-6-14 10:12:33

oliverzhy 发表于 2011-6-14 01:44 static/image/common/back.gif
Hi,

中间变量 我做了一个,

不同的请求之间无法共享内存,也无法共享变量。
跨请求共享最常见的就是 Session,数据库等等。

PS: 建议你先了解一下 PHP 的运行机制,对于你理解这个问题有很大帮助,呵呵
页: [1] 2
查看完整版本: 函数间的变量传递问题