Установить обработчик кэша на уровне объекта?
Скажем, у меня есть базовый объект, 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;
}