У меня есть система, над которой я работаю:
abstract class Model {
static $table = "";
abstract static function init();
public static function getById() {
$table = self::$table;
}
}
class Model_user extends Model {
static function init() {
self::$table = "users";
}
}
class Model_post extends Model {
static function init() { self::$table = "post"; }
}
// ...
Model_user::init();
Model_post::init();
$user = Model_user::getById(10);
$post = Model_user::getById(40);
Я хочу, чтобы это было так, чтобы у каждого подкласса был свой набор статических членов, к которым могут обращаться статические функции в Model.Я не могу использовать ключевое слово static ::, потому что мне нужно использовать PHP 5.2.16.К сожалению, я не могу просто сказать «self ::» из-за проблемы с PHP, показанной в следующем примере:
class Foo {
static $name = "Foo";
static function printName() {
echo self::$name;
}
}
class Bar extends Foo {
static $name = "Bar";
}
class Foobar extends Foo {
static $name = "Foobar";
}
Bar::printName();
echo "<br />";
Foobar::printName();
, который отображает:
Foo<br />Foo
Когда он должен отображаться:
Bar<br />Foobar
Как это можно сделать?