<?php
/**
* LSB 延期静态绑定
* @package PHPDocs
* @author vboy
*/
class A
{
public static function foo()
{
echo __CLASS__;
}
}
class B extends A
{
public static function foo()
{
echo __CLASS__;
}
public static function test()
{
static::foo();
self::foo();
parent::foo();
}
}
class C extends B
{
public static function foo()
{
echo __CLASS__;
}
}
C::test();
//输出: C B A
echo "<br>";
class D
{
public function foo()
{
echo __CLASS__;
}
public static function test()
{
static::foo();
}
}
class E extends D
{
public function foo()
{
echo __CLASS__;
}
}
class F extends D
{
}
class G extends E
{
public function foo()
{
echo __CLASS__;
}
}
class H extends F
{
public function foo()
{
echo __CLASS__;
}
}
E::test(); //输出:E
F::test(); //输出:D
G::test(); //输出:G
H::test(); //输出:H
echo "<br>";
class I
{
public function foo()
{
echo __CLASS__;
}
public function test()
{
static::foo();
}
}
class J extends I
{
public function foo()
{
echo __CLASS__;
}
}
class K extends I
{
}
$obj = new J();
$obj->test(); //输出:J
$obj = new K();
$obj->test(); //输出:I
echo "<br>";
class L
{
public static $method = array(
'user' => 'L1',
'pass' => 'L2',
);
public function foo()
{
var_dump(static::$method);
}
}
class M extends L
{
public static $method = array(
'user' => 'M1',
'pass' => 'M2',
);
}
class N extends L
{
}
$obj = new M();
$obj->foo();
$obj = new N();
$obj->foo();
echo "<br>";
?>