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

[已解决] 函数间的变量传递问题

[复制链接]
发表于 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也初始化了,貌似也不行。

谢谢

发表于 2011-6-13 13:01:10 | 显示全部楼层
你要是这样的话,你得在构造函数中初始化
发表于 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;}
}
发表于 2011-6-13 16:52:30 | 显示全部楼层
本帖最后由 spt119 于 2011-6-13 16:54 编辑

直接在函数中调用function yyyy()即可。
但前提是需要在yyyy()中设置一个适合的return。
类似这样。
PHP复制代码
 
class abc extends CI_Controller {
 
     function xxxx()
    { $abc = 'asdasdf'; $你的变量 = $abc + $this->yyyy();}
 
    function yyyy()
    { $ccc = $abc + 3333;return $ccc;}
}
 
}
 
复制代码

 楼主| 发表于 2011-6-13 22:08:16 | 显示全部楼层
spt119 发表于 2011-6-13 16:52
直接在函数中调用function yyyy()即可。
但前提是需要在yyyy()中设置一个适合的return。
类似这样。

晓得了, 一会试。

谢谢
 楼主| 发表于 2011-6-13 22:10:25 | 显示全部楼层
zhouli520 发表于 2011-6-13 13:11
class abc extends CI_Controller {
private $abc;
     function abc()

抱歉,可能没有说清楚。

这个变量不能初始, 因为是form提交过来的一些数据。
发表于 2011-6-14 00:46:04 | 显示全部楼层
oliverzhy 发表于 2011-6-13 22:10
抱歉,可能没有说清楚。

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

做一个类的中间变量,比如 $this->a1, $this->a2 等等,存储你的 form 数据,然后就可以类里共享了。
如果要跨类,就只能是全局变量了。
 楼主| 发表于 2011-6-14 01:44:39 | 显示全部楼层
Hex 发表于 2011-6-14 00:46
做一个类的中间变量,比如 $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)

奇怪, 中间变量是这样的定义的吗? 还是我的思路错了?
发表于 2011-6-14 09:56:15 | 显示全部楼层
oliverzhy 发表于 2011-6-14 01:44
Hi,

中间变量 我做了一个,

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

直接访问bbbb就有了
发表于 2011-6-14 10:12:33 | 显示全部楼层
oliverzhy 发表于 2011-6-14 01:44
Hi,

中间变量 我做了一个,

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

PS: 建议你先了解一下 PHP 的运行机制,对于你理解这个问题有很大帮助,呵呵

本版积分规则