PHP类的静态变量和静态方法

为什么在类外用对象可以访问静态方法,但不能访问静态变量

class Test
{
    public static $num = 100;
    public static function abc()
    {
        echo '静态';
    }
}
$t = new Test();
$t->abc();
// 提示notice
echo $t->num;

感谢您的帮助

阅读 3.1k
4 个回答

echo $t::$num;

类的静态成员属性和静态成员方法要通过 类名::[属性名/方法名]访问 。类的实例化对象可以通过 self::[属性名/方法名]

从我的理解来看,静态成员是 类的,不是对象的,所以没办法通过对象访问。实在有需要,可以在对象中添加指定的方法来修改。

首先,文档对这一点有专门明确 链接描述
clipboard.png

其次,楼上也已经回答了这一点,静态属性属于类而并不存在于实例化的对象当中,访问当然会有报错

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题