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

<?php

header(\"大众Content-Type:text/html;charset=utf-8\"大众);

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

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都可以表示当前类,但是其代表的意义有所差别。