поздняя статика в PHP 5.3 не дает ожидаемого результата при наследовании - PullRequest
0 голосов
/ 09 августа 2010

У меня проблема со статическим ключевым словом из-за наследования в PHP 5.3.

abstract class Object
{
    protected static $_classDataSource = null;

    public static function getDataSource()
    {
        return static::$_classDataSource;
    }

    public static function setDataSource( $dataSource)
    {
        static::$_classDataSource = $dataSource;
    }
}

class Film extends Object
{

}

class Actor extends Object
{

}
Film::setDataSource('FFF');
Actor::setDataSource('aaa');
echo Film::getDataSource();
echo Actor::getDataSource();

Результат: aaaaaa Ожидаемый результат: FFFaaa

Что я должен сделать, чтобы сделать это, как ожидалось?

Ответы [ 2 ]

2 голосов
/ 09 августа 2010

Вам необходимо повторно объявить статические переменные в дочерних классах или разбить набор ссылок вручную.См. этот ответ .

0 голосов
/ 09 августа 2010

Я знаю, что технически это не отвечает на ваш точный вопрос, но я должен спросить: почему?Если вам нужна конфигурация (например, настройка источника данных), в большинстве случаев лучше использовать экземпляры ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...