Я работаю над проектом, в котором я хотел бы иметь возможность объявлять статическую переменную-член внутри абстрактного базового класса. У меня есть класс Model, промежуточный класс Post и, наконец, класс Post для конкретного сайта, что-то вроде следующего:
abstract class Model {
protected static $_table = null;
protected static $_database = null;
...
}
abstract class PostModel extends Model {
public function __construct() {
if ( !isset(self::$_table) ) {
self::$_table = 'some_table';
}
parent::__construct();
}
...
}
class SitePostModel extends PostModel {
public function __construct() {
if ( !isset(self::$_database) ) {
self::$_database = 'some_database';
}
parent::__construct();
}
...
}
Я бы хотел, чтобы из класса Model было очевидно, что требуются члены $ _table и $ _database. Однако $ _table действительно статичен с точки зрения класса PostModel, а $ _database действительно статичен с точки зрения класса SitePostModel.
Это законный способ достижения моей цели? Означает ли объявление статических переменных в самой модели, что они должны существовать только один раз для абстрактного базового класса или только один раз для фактического экземпляра класса?