PHP 5.2 类虚拟静态方法

标签 php static virtual

这是我的情况:我有一个看起来像这样的 PHP 基类:

class Table {
  static $table_name = "table";
  public function selectAllSQL(){
    return "SELECT * FROM " . self::$table_name;
  }
}

还有一个像这样的子类:

class MyTable extends Table {
  static $table_name = "my_table";
}

不幸的是,当我这样做的时候:

MyTable::selectAllSQL()

我得到:

"SELECT * FROM table"

而不是我想要的结果,

"SELECT * FROM my_table"

看起来这可以在 php 5.3 中使用 late static bindings 完成, 但有什么方法可以在 PHP 5.2.x 中完成此行为吗?

最佳答案

不是真的。这就是 LSB 被添加到 5.3 的原因。在这个地方,实例化是要走的路,还有一个单例。

关于PHP 5.2 类虚拟静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/872931/

相关文章:

c++在类中创建对象

php - 在 WordPress 中包含 JavaScript

php - 不同的 CSS 背景图像取决于月份和年份

php - Android中如何使用ID从服务器获取数据

php - 我在这个查询中做错了什么?

c# - 在静态方法中使用 Winform 对象

c++ - 静态函数和非虚拟方法可以被覆盖吗?什么是静态多态?

c++ - C++中的虚拟乘法运算符

java - 如果静态方法的定义不能被派生类覆盖/更改,为什么以及何时需要在派生类中重新声明静态方法?

c++ - 从析构函数调用虚函数