В настоящее время я разрабатываю небольшой класс, который в значительной степени выиграет от решения кэширования, поскольку он делает HTTP-запрос сторонним API.Как реализовать сторонние кеши в пользовательский класс или библиотеку
Я действительно не хочу принуждать пользователя к определенному предварительно реализованному кэшированию. Я также хочу, чтобы использование было действительно простым.
Вместо этого я предпочел бы, чтобы пользователь класса решил, какой механизм кеширования он или она будет использовать.
Что было бы в этом случае воплощением передовой практики?
Я думал, что простой метод геттер/сеттер бы целесообразно:
$class->retrieveFromCache(function() {
return UserDefinedCache::get('user_defined_key');
});
$class->writeToCache(function($value) {
UserDefinedCache::set('user_defined_key', $value);
});
Это дает возможность пользователю использовать любой кэш, он или она хочет. Сохранение простоты использования и использования.
Кроме того, класс также должен хранить и извлекать значение из файла cookie. Аналогичным образом я бы использовал аксессоры для него. Таким образом, пользователь может использовать механизм cookie, который наилучшим образом соответствует его окружению или структуре.
$class->getCookieValue(function() {
return $_COOKIE['custom_name'];
});
$class->setCookieValue(function($value) {
setcookie('custom_name', $value);
});
Будет ли это хорошей реализацией? Есть ли недостатки, которые я забыл? Или есть лучшие решения?
Возможно, я спросил недостаточно ясно. Я бы хотел, чтобы это было просто. Например. пользователь моей библиотеки мог также использовать свою базу данных mysql в качестве кеша. Я действительно не вижу преимущества в том, чтобы заставить его или ее адаптировать интерфейс кэширования. Я также не хочу вносить свою библиотеку с зависимостями сторонних кешей. Консоль куки: они не должны использоваться в качестве кеша. Библиотеке необходимо записать некоторые данные в файл cookie конечного пользователя. Я действительно не хочу испортить проекты, в которых будет использоваться библиотека, путем добавления заголовков файлов cookie.Это поведение должно контролироваться пользователем библиотеки. –
Не имеет смысла * не * реализовывать интерфейс и обеспечивать его соблюдение, если вы хотите разрешить использование разных кеш-серверов. Если вы хотите, чтобы это было просто, но не следовать каким-либо общим шаблонам, просто создайте класс для каждого кеша и просто создайте геттер и сеттер. В противном случае я не получу вашу проблему. – burzum