在php中扩展静态方法

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (60)
class Foo {
  public static function foobar() {
    self::whereami();
  }

  protected static function whereami() {
    echo 'foo';
  }
}

class Bar extends Foo {
  protected static function whereami() {
    echo 'bar';
  } 
}

Foo::foobar();
Bar::foobar();

预期结果foobar实际结果foofoo

更糟糕的是,服务器仅限于PHP 5.2

提问于
用户回答回答于

这篇文章很好地介绍了它:为什么PHP 5.2+不允许使用抽象静态类方法

用户回答回答于

你不必也覆盖父函数foobar()吗?

class Foo {
  public static function foobar() {
    self::whereami();
  }
  protected static function whereami() {
    echo 'foo';
  }
}
class Bar extends Foo {
  public static function foobar() {
    self::whereami();
  }
  protected static function whereami() {
    echo 'bar';
  } 
}

Foo::foobar();
Bar::foobar();

扫码关注云+社区

领取腾讯云代金券