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