PHP Статические переменные в абстрактных классах

Я работаю над проектом, в котором я хотел бы иметь возможность объявить статическую переменную-член внутри абстрактной базы. класс. У меня есть класс 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.

Это законный способ достичь моей цели? Означает ли объявление статических переменных в самой модели, что они должны существовать только один раз для абстрактного базового класса или только один раз для фактического экземпляра класса?

6
задан michaelxor 17 October 2011 в 18:36
поделиться