php - 在 PHP 中重写派生类中的静态成员

标签 php inheritance static

<?php
class Base {
  protected static $c = 'base';

  public static function getC() {
    return self::$c;
  }
}

class Derived extends Base {
  protected static $c = 'derived';
}

echo Base::getC(); // output "base"
echo Derived::getC();    // output "base", but I need "derived" here!
?>

那么最好的解决方法是什么?

最佳答案

解决此问题的最佳方法是升级到 PHP 5.3,其中 late static bindings可用。如果这不是一个选择,那么您将不得不重新设计您的类。

关于php - 在 PHP 中重写派生类中的静态成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3169993/

相关文章:

php - 如何记住 for 循环中表达式的顺序?

c++ - C++中的多态对象数组更改对象的详细信息

asp.net-mvc - 在 MVC4 中路由带有扩展名的 url 将不起作用,尝试提供静态文件

c++ - 在编译时填充 std::set?

java - 我可以在 UI 线程之外使用 getFilesDir

php - 当 Ajax 建表时,如何根据其中的数据量有条件地设置 <td> 的高度?

php - 找到一个词的词根

php - Joomla模块,获取 "Show/Hide Module Title"参数

c++ - 如何让派生类使用基实现来满足接口(interface)

css - 使 div 宽度适合内容而不适合父级