先看一段代码:
 <?php
<?php class User
  class User {
  { static private $counter = 1;
           static private $counter = 1; 
            public function __construct()
           public function __construct() {
           { self::$counter++;
                   self::$counter++; }
           }
 static public function getCount()
           static public function getCount() {
           { return self::$counter;
                   return self::$counter; }
           } 
            public function __destruct()
           public function __destruct() {
           { self::$counter--;
                   self::$counter--; }
           } }
  } 
     echo ‘run static getCount:‘.User::getCount().‘<br>‘;
  echo ‘run static getCount:‘.User::getCount().‘<br>‘; 
   $user1 = new User();
  $user1 = new User(); $user2 = new User();
  $user2 = new User(); echo ‘run user1 getCount:‘.$user1->getCount().‘<br>‘;
  echo ‘run user1 getCount:‘.$user1->getCount().‘<br>‘; unset($user1);
  unset($user1); echo ‘run user2 getCount:‘.$user2->getCount();
  echo ‘run user2 getCount:‘.$user2->getCount();
 ?>
?>
 运行结果:
运行结果:
 run static getCount:1
run static getCount:1 run user1 getCount:3
run user1 getCount:3 run user2 getCount:2
run user2 getCount:2
通过如上代码可以得到相关结论:
1、静态变量和静态方法,不需要new一个对象就可以直接使用;
2、当对象被unset后,仍然能够继续使用。
由此可知,静态变量和静态方法,在进程创建的时候就被创建了,而不是在对象创建的时候才被创建,并且其生命周期同该进程的生命周期一样长,其占用的系统资源是初始化进程申请资源的一部分。
原文:http://www.cnblogs.com/bzphp/p/5179034.html