首页  >  文章  >  后端开发  >  php中self和static的区别详解

php中self和static的区别详解

小云云
小云云原创
2018-03-31 09:59:191692浏览

在php中self关键字能够代表当前类,一般用于调用当前类的静态方法或者静态属性。但是static除了能够定义静态这一属性之外,还有着与self类似的功能(代表当前类)。

但是两者之间还是有一定的区别的,我们通过代码验证:

<?php
header("Content-Type:text/html;charset=utf-8");
Class A{
	public static $p1=1;
	public $p2=2;
	public static function showInfo(){
		echo "<br/>".self::$p1;
	}
	public static function showInfo2(){
		echo "<br/>".static::$p1;
	}
}
Class B extends A{
	static $p1=10;//此处覆盖继承过来的变量p1.
	public $p2=20;
	
}
A::showInfo();
echo "<br/>";
B::showInfo();
echo "<hr/>";
A::showInfo2();
echo "<br/>";
B::showInfo2();

通过结果我们可以看出:

    当调用方法showInfo()时输出对象为self::$p1。此时,尽管B类是继承于A类,且在B类中调用继承的方法,其显示的永远是self关键字所在的那一类。因此可以说:self表示的当前类主要是当前代码所在的类。

    当调用方法showInfo2()时输出对象为static::$p1。此时,输出的结果不相同。A类中输出自己调用的属性。B也输出的是自己调用的属性(继承A类中的方法后调用的$p2被覆盖掉的值)。因此:static代表的是调用当前方法所在的类。

因此,虽然self和static都可以表示当前类,但是其代表的意义有所差别。 

相关推荐:

php面向对象中self和static的区别

以上是php中self和static的区别详解的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn