PHP 类中的静态变量的继承
2015-08-13 12:00
549 查看
在此我首先运行一段小程序,先不去直接讲出静态变量的继承在PHP中语法规则,for example:
class Base{
public $a;
public static $b;
}
class Derived extends Base{
public function __construct(){
$this->a=0;
parent::$b=0;
}
public function f(){
$this->a++;
parent::$b++;
}
}
$D1=new Derived();
$D2=new Derived();
$D1->f();
echo $D1->a." ".Derived::$b."<br>";
$D2->f();
echo $D2->a." ".Derived::$b."<br>";
得出的结果是,如下:
在此有的人可能会好奇,为什么Derived::$b得出来的结果是:2,而不是:1?
由上面这个小例子,可以得出原因:当一个子类,继承了父类中的静态变量之后,在实例化不同的对象时,所访问原来的那个静态变量所指向的地址是同一个地址。而不会因为新的实例化对象,从而开辟一段新的地址给这个变量。
class Base{
public $a;
public static $b;
}
class Derived extends Base{
public function __construct(){
$this->a=0;
parent::$b=0;
}
public function f(){
$this->a++;
parent::$b++;
}
}
$D1=new Derived();
$D2=new Derived();
$D1->f();
echo $D1->a." ".Derived::$b."<br>";
$D2->f();
echo $D2->a." ".Derived::$b."<br>";
得出的结果是,如下:
在此有的人可能会好奇,为什么Derived::$b得出来的结果是:2,而不是:1?
由上面这个小例子,可以得出原因:当一个子类,继承了父类中的静态变量之后,在实例化不同的对象时,所访问原来的那个静态变量所指向的地址是同一个地址。而不会因为新的实例化对象,从而开辟一段新的地址给这个变量。
相关文章推荐
- 提高php编程效率技巧
- 分页模糊查询中setParameter 和setParameterList
- PHP学习总结(三)
- ftp vsftpd.conf配置文件
- PHP Console工具使用分享
- PHP发送POST请求的三种方式 分别使用curl file_get_content fsocket 来实现post提交数据
- php中static静态类与static 静态变量用法区别
- window output
- php取整函数ceil,floor,round,intval函数的区别
- sql的count()函数,php怎么取他的值
- PHP 中$_SERVER 详细介绍
- PHP实现页面后退保存表单内容的两种方法
- 个人Yii遇到的一些小问题积累
- PHP ZipArchive 实现压缩解压Zip文件
- PHP 常用的代码片段
- phpstrom快捷键
- PHP多文件上传类
- PHP中XML-RPC使用笔记
- PHP生成缩略图类
- PHP之APC缓存详细介绍