php中关于self和static代表本类的区别详解

2022-10-11 20:28:24 118 0
魁首哥

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

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

php中关于self和static代表本类的区别详解

header (“Content-Type:text/html;charset=utf-8”);

Class A{

public static $p1=1;

public $p2=2;

public static function showInfo(){

echo “
”.self::$p1;

}

public static function showInfo2(){

echo “
”.static::$p1;

}

}

Class B extends A{

static $p1=10;//此处覆盖继承过来的变量p1.

public $p2=20;

}

A::showInfo();

echo “
”;

B::showInfo();

echo “


”;

A::showInfo2();

echo “
”;

B::showInfo2();

\

通过结果我们可以看出:

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

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

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

收藏
分享
海报
0 条评论
118
上一篇:python与java、php、go的优势对比,各语言不要引起恐慌哈 下一篇:WordPress退出登录后跳转到指定的页面

本站已关闭游客评论,请登录或者注册后再评论吧~

忘记密码?

图形验证码