我看书上说:static成员总是唯一存在的,并且在多个对象之间互享。
因此想到,如果我在a.php中实例化了Person.class.php这个类,并给static $name赋值,那么在b.php中再次实例化这个类,b中能不能读取name属性的新值呢?
代码如下:
Person.class.php
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 
 | <?php  class person{
 public static $name;
 
 function __construct($name='vv'){
 
 }
 
 function getName(){
 return self::$name;
 }
 }
 ?>
 
 | 
a.php
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 
 | <?php   include 'Person.class.php';
 
 $ren = new Person();
 Person::$name = 'aa';
 echo $ren -> getName();
 
 $ren2 = new Person();
 echo $ren2 -> getName();
 
 ?>
 
 | 
b.php
| 12
 3
 4
 5
 6
 
 | <?php   include 'Person.class.php';
 
 $ren3 = new Person();
 echo $ren3 -> getName();
 ?>
 
 | 
 事实证明:static成员只能在“同一脚本”的多个对象之间互享,b.php并不能读取a.php设置的属性值,后来想到这也理所当然,因为php可以同时产生多个进程,当执行完一个脚本后会自动释放内存,因此b.php无法读取a.php设置的属性!
static完整使用说明:见《细说php》第284页。