实例化原因类别是一种选择!
<?php
abstract class Table {
protected $table_name;
public function selectAllSQL() {
return 'SELECT * FROM ' . $this->table_name;
}
}
class MyTable extends Table {
protected $table_name = 'my_table';
}
$my_table = new MyTable();
echo $my_table->selectAllSQL(); // Will output "SELECT * FROM my_table"
如果你必须保持静态而不是重新实现是 PHP < 5.3 的唯一方法:
<?php
abstract class Table {
protected static $table_name = 'table';
public static function selectAllSQL() {
return self::selectAllSQLTable(self::$table_name);
}
public static function selectAllSQLTable($table) {
return 'SELECT * FROM ' . $table;
}
}
class MyTable extends Table {
protected static $table_name = 'my_table';
public static function selectAllSQL() {
return self::selectAllSQLTable(self::$table_name);
}
}
class MyOtherTable extends Table {
protected static $table_name = 'my_other_table';
public static function selectAllSQL() {
return self::selectAllSQLTable(self::$table_name);
}
}
echo MyTable::selectAllSQL(); // Will output "SELECT * FROM my_table"
echo MyOtherTable::selectAllSQL(); // Will output "SELECT * FROM my_other_table"