class Father
{
public static function name()
{
echo "Father";
}
public static function callself()
{
self::name();
}
public static function callstatic()
{
static::name();
}
}
class Son extends Father
{
public static function name()
{
echo "Son";
}
}
Son::callself(); // Father
Son::callstatic(); // Son
例子
class A {
private function foo () {
var_dump($this); echo '--';
var_dump(new static); echo '--';
echo __CLASS__; echo '--';
echo get_called_class();
echo '<br>';
}
public function test () {
$this->foo();
static::foo();
echo '<br>';
}
}
class B extends A { }
class C extends A {
private function foo () {
echo 'this is C';
}
}
(new B())->test();
(new C())->test();
输出结果为:
object(B)#1 (0) { } --object(B)#2 (0) { } --A--B
object(B)#1 (0) { } --object(B)#2 (0) { } --A--B
object(C)#1 (0) { } --object(C)#2 (0) { } --A--C
Fatal error: Uncaught Error: Call to private method C::foo() from context 'A