PHP OO通过扩展覆盖const


PHP OO overwrite const through extending

我发现了一件奇怪的事:

<?php
    class LW_Base{
        const MULTIPLE = 'LW_Base';
        public static function name(){
            return strtolower(static::MULTIPLE);
        }
    }
    class LW_Extend extends LW_Base{
        const MULTITPLE = 'LW_Extend';
    }
    $t = new LW_Extend();
    echo $t::name().'==LW_Extend';
?>

这是一个很小的(350行- NCLOC) php项目的代码剪辑。输出应该是"lw_extend== lw_extend ",但实际上是"lw_base== lw_extend "。

我发誓:在另一个更大的项目(1155行- NCLOC),更复杂的(命名空间,类层次结构,很多函数,…),这是工作的。

问题:我做错了什么/不稳定?

我真的需要一个信息。我要找一个星期。我认为解决方案必须很简单,因为它适用于另一个项目(我实际上不能粘贴关于其他项目的信息,抱歉)

此致敬礼,感谢每一个帖子。奥利

两个类的const声明拼写错误,

const MULTIPLE = 'LW_Base';
const MULTITPLE = 'LW_Extend';

必须调用与相同的类中的常数self

    class LW_Base{
        const MULTIPLE = 'LW_Base';
        public static function name(){
            return strtolower(self::MULTIPLE);
        }
    }