<?php
// 后期静态绑定: 延迟静态绑定
// 用在静态继承的上下文环境中
namespace _1010;
class A
{
public static function who()
{
echo __CLASS__;
}
public static function test()
{
// self::who();
static::who();
}
}
// 静态继承的上下文
class B extends A
{
// 在子类重写父类A中的静态方法who()
public static function who()
{
echo __CLASS__;
}
}
A::test();
echo '<br>';
B::test();
echo '<hr>';
class Connect
{
public static function connect()
{
// return self::config();
return static::config();
}
public static function config()
{
return new \PDO('mysql:dbname=php;host=127.0.0.1', 'root', '123456');
}
}
class Link extends Connect
{
public static function config()
{
return new \PDO('mysql:dbname=php;host=127.0.0.1', 'root', 'root');
}
}
$pdo = Link::connect();
foreach ($pdo->query('select * from staff limit 5') as $staff) {
print_r($staff); echo '<br>';
}
//静态继承的上下文环境中, 调用被子类重写的静态方法,使用关键字static, 代替掉self
php静态绑定的主要目的是动态调用方法