静态变量和静态方法的生命周期

 先看一段代码:

 

 1 <? php
 2    class  User
 3 ExpandedBlockStart.gifContractedBlock.gif   {
 4           static private $counter = 1;
 5           
 6           public function __construct()
 7ExpandedSubBlockStart.gifContractedSubBlock.gif           {
 8                   self::$counter++;
 9           }

10
11           static public function getCount()
12ExpandedSubBlockStart.gifContractedSubBlock.gif           {
13                   return self::$counter;
14           }

15           
16           public function __destruct()
17ExpandedSubBlockStart.gifContractedSubBlock.gif           {
18                   self::$counter--;
19           }

20  }

21     
22   echo  ' run static getCount: ' .User::getCount(). ' <br> ' ;
23   
24   $user1  =   new  User();
25   $user2  =   new  User();
26   echo  ' run user1 getCount: ' .$user1 -> getCount(). ' <br> ' ;
27   unset($user1);
28   echo  ' run user2 getCount: ' .$user2 -> getCount();
29
30 ?>
31
32 运行结果:
33
34 run  static  getCount: 1
35 run user1 getCount: 3
36 run user2 getCount: 2

 

     通过如上代码可以得到相关结论:

          1、静态变量和静态方法,不需要new一个对象就可以直接使用;

          2、当对象被unset后,仍然能够继续使用。

     由此可知,静态变量和静态方法,在进程创建的时候就被创建了,而不是在对象创建的时候才被创建,并且其生命周期同该进程的生命周期一样长,其占用的系统资源是初始化进程申请资源的一部分。

     至于apache是如何给进程分配内存的,请看下一篇 简单介绍apahce内存管理机制 。

     注:每刷新一下页面,就会使服务器端产生一个进程(或线程)处理该请求。

 

转载于:https://www.cnblogs.com/eoiioe/archive/2008/12/20/1359033.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值