<?php
//php的静态重载技术
class Father
{
//静态属性
public static $money = 50000;
//静态方法
public static function getClass()
{
//返回当前类名
return __CLASS__;
}
//静态方法
public static function getMoney()
{
// return self::getClass().'::'.self::$money;
//static用在静态继承的上下文中,动态设置静态成员的调用者(主体)
return static::getClass().'::'.static::$money;
}
}
//定义子类,继承自Father
class Son extends Father
{
//复写父类的静态属性
public static $money = 30000;
//复写父类的静态方法
public static function getClass()
{
return __CLASS__;
}
}
//调用Father的静态方法
echo Father::getClass().'<hr>';
echo Father::getMoney().'<hr>';
//调用Son的静态成员
echo Son::$money.'<hr>';
//调用Son的静态方法
echo Son::getClass().'<hr>';
echo Son::getMoney().'<hr>;'
?>php的延迟静态绑定技术:
self或__CLASS__的限制是在于它们绑定的类是定义该方法的类,在编译时绑定,继承并不会改变绑定的类。
static则是在执行时才绑定类,可以动态绑定当前的类
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号