static修饰的类属性

来源:互联网 发布:淘宝网男装新款 编辑:程序博客网 时间:2024/05/01 20:10

我看书上说:static成员总是唯一存在的,并且在多个对象之间互享。

因此想到,如果我在a.php中实例化了Person.class.php这个类,并给static $name赋值,那么在b.php中再次实例化这个类,b中能不能读取name属性的新值呢?

代码如下:

Person.class.php

<?php    class person{        public static $name;        function __construct($name='vv'){            //self::$name = $name;        }        function getName(){            return self::$name;        }    }?>

 

a.php

<?php     include 'Person.class.php';    $ren = new Person();    Person::$name = 'aa';    echo $ren -> getName(); //aa    $ren2 = new Person();    echo $ren2 -> getName(); //aa?>

 

b.php

<?php     include 'Person.class.php';    $ren3 = new Person();    echo $ren3 -> getName(); //null?>


 事实证明:static成员只能在“同一脚本”的多个对象之间互享,b.php并不能读取a.php设置的属性值,后来想到这也理所当然,因为php可以同时产生多个进程,当执行完一个脚本后会自动释放内存,因此b.php无法读取a.php设置的属性!

 

static完整使用说明:见《细说php》第284页。

 

0 0