先看一段代码
<?php
class Person
{
public static function name()
{
echo "person";
echo "<br />";
}
public static function callself()
{
self::name();
}
public static function callstatic()
{
static::name();
}
}
class Man extends Person
{
public static function name()
{
echo "man";
echo "<br />";
}
}
Man::callself(); // output: person
Man::callstatic(); // output: man
?>
self:: 输出的是person
static::输出的是man
总结:self 执行的是 self自身所在的类,self::name() 所在的是person类 所以调用的是person的name()
static执行的是实例的当前类,也就是你引用出来的是哪个类,那么用的就是哪个类中的方法或者属性所以static调用的static是通过Man这个类调用的 所以用的是man中的name 最后输出man