PHP OO通过扩展覆盖常量
我有一件奇怪的事:PHP OO通过扩展覆盖常量,php,class,oop,constants,extends,Php,Class,Oop,Constants,Extends,我有一件奇怪的事: <?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_Ext
<?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”
我发誓:在另一个更大、更复杂(名称空间、类Hirarchys、许多函数等)的项目中(1155行-NCLOC),这是可行的
问题:我做错了什么/不稳定?如果某件事只起一次作用,它就必须起两次作用
请:我真的需要一个信息。我要找一个星期。我认为解决方案必须简单,因为它适用于另一个项目(对不起,我实际上无法粘贴关于另一个项目的信息)
问候,谢谢你的每一个帖子,
奥利两个班级的常量声明拼写错误
const MULTIPLE = 'LW_Base';
const MULTITPLE = 'LW_Extend';
您必须在与self
class LW_Base{
const MULTIPLE = 'LW_Base';
public static function name(){
return strtolower(self::MULTIPLE);
}
}
multiple!=多个
OH noooooooo:)谢谢:)哈哈。。。注意:在我写这篇文章之前,我咨询了另外两位朋友,也是优秀的PHP开发人员^^^^再次感谢:)它很有效