php static

西电小楠 2013-08-09 04:05:04
RT,用CI框架在写一个php网页,现发现static关键字不太会用,简化代码如下:

class A extends CI_Controller{
private static $num = 0;
public function f1(){
self::$num = 1;
this->load->view('v1');
}
public function f2(){
if(self::$num === 1){
this->load->view('v2');
}else{
this->load->view('v3');
}
}
}

刚开始我们访问函数f1,在f1中跳转到页面v1,然后在v1中又跳回f2,但是此时的num已经被重置了,会跳转到v3,这是为什么呢?php中的static不彻底吗?
...全文
129 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
西电小楠 2013-08-09
  • 打赏
  • 举报
回复
引用 3 楼 xuzuning 的回复:
那你就在开玩笑了!你从url进入,还能回到原来的现场吗?
啊?好吧……我是凭直觉这么想的。。 我认为这个class在载入内存之时就有num这个变量,而且因为它是static的,所以不会因为页面跳转引发的对象消亡而被释放,所以在再次进入之时,num还应该是对象消亡之前的样子。
xuzuning 2013-08-09
  • 打赏
  • 举报
回复
那你就在开玩笑了!你从url进入,还能回到原来的现场吗?
西电小楠 2013-08-09
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
"然后在v1中又跳回f2" 你是怎么跳的? 如果是在 v1 中由实例化了 A ,那么 num 当然要被重置 我感觉你需要的是“单例模式”的 A
先不说单利模式,v1中往回跳很简单啊,就是一个链接,www.xxxx.com/index.php/A/f2,这样就跳回来了
xuzuning 2013-08-09
  • 打赏
  • 举报
回复
"然后在v1中又跳回f2" 你是怎么跳的? 如果是在 v1 中由实例化了 A ,那么 num 当然要被重置 我感觉你需要的是“单例模式”的 A

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧