php - 子类覆盖父静态属性

标签 php static

如果我错了请告诉我,但我很确定这是 PHP 中的错误。

<?php

class One {

    public static $var = 'hi';
}

class Two extends One {

    public static function set($var) {
        static::$var = $var;
    }
}

Two::set('bye');

var_dump(One::$var);
// bye

当我非常确定它应该输出“hi”时,该脚本输出“bye”。你怎么认为?

不想在子类中重新声明它。

最佳答案

OP 编辑​​的问题,这是他提到他不想重新声明属性之前的答案

这是因为 TwoOne 共享 $var

如果你这样写,那么你会得到想要的输出

class One {

    public static $var = 'hi';
}

class Two extends One {

    public static $var = 'hi';

    public static function set($var) {
        static::$var = $var;
    }
}

Two::set('bye');

// you get hi
var_dump(One::$var);
// you get bye
var_dump(Two::$var);

关于php - 子类覆盖父静态属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15174870/

相关文章:

php - Facebook sdk marketing api 使用 date_preset 获取大量见解

php - 在Doctrine中使用MAX()子查询

php - MYSQL 数据类型用于长描述、特殊字符

c - C 中用字符串初始化的静态 char 数组

PHP 避免静态类以避免依赖,但我需要在任何地方使用全局

php - 访问被拒绝使用 PHP 连接到 MySQL

javascript - 使用外部提交按钮提交两种不同的表单无法正常工作

C 查找静态数组大小

java - 同步方法和静态变量访问 JAVA/ANDROID

php - 动态调用一个静态变量(数组)