-2

我有一个奇怪的事情:

<?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)中,更复杂的(命名空间、类层次结构、很多功能......)这是有效的。

问题:我做错了什么/不稳定?如果某事工作一次,它必须工作两次。

请:我真的需要一个信息。我正在寻找一个星期。我认为解决方案必须简单,因为它适用于另一个项目(我实际上无法粘贴有关该其他项目的信息,抱歉)

问候,并感谢您的每一次发帖,奥利

4

1 回答 1

2

2 个类的 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);
        }
    }
于 2013-06-03T07:52:15.060 回答