4

これが私の状況です。次のような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でこの動作を実現する方法はありますか?

4

4 に答える 4

2

Yeh late static binding が進むべき道です。おそらく、あなたは今では PHP 5.3 を使用しています。その場合の外観は次のとおりです。

変化する

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

class Table {
  static $table_name = "table";
  public function selectAllSQL(){
    return "SELECT * FROM " . static::$table_name;
  }
}
于 2010-05-13T11:37:15.700 に答える