Установить обработчик кэша на уровне объекта?

Скажем, у меня есть базовый объект, CacheObject:

abstract class CacheObject {
    protected static $handler = null;

    public static function setCacheHandler($handler) {
        static::$handler = $handler;
    }

    public static function getCacheHandler($handler) {
        return static::$handler;
    }
}

class A extends CacheObject {

}

class B extends CacheObject {

}

A::setCacheHandler('test');
var_dump(B::getCacheHandler());

B даст мне "тест", который, как я считаю, объясняется тем, что у класса A нет собственного определенного свойства $handler... поэтому он использует наследуемое свойство, общее для класса B. Является ли это точным?

Можно ли как-то настроить их отдельно, не объявляя $ handler внутри каждого объекта?

1 ответ

Ваш

public static function getCacheHandler($handler) { // No need to pass arg here
        return static::$handler;
    }

должно быть

public static function getCacheHandler() {
        return static::$handler;
    }
Другие вопросы по тегам