지금은 PSR-6
CacheItemPoolInterface
인터페이스를 구현할 때 save
메소드에 대해 혼란스러웠습니다. save
메소드는 CacheItemInterface
유형의 매개변수만 받았지만 CacheItemInterface
인터페이스는 유사한 메소드를 제공하지 않았습니다. getExpireTime
로 인해 CacheItemPoolInterface
은 캐시 항목의 만료 시간을 얻을 수 없어 캐시 저장소에 데이터를 올바르게 쓸 수 없게 됩니다.
symfony/cache php-cache/cache tedious/Stash와 같은 잘 알려진 여러 PSR-6
구현을 본 적이 있지만 이러한 구현 버전은 save
메서드를 구현할 때 그다지 우아하지 않습니다.
예를 들어symfony/cache
<code>public function save(CacheItemInterface $item) { if (!$item instanceof CacheItem) { return false; } if ($this->deferred) { $this->commit(); } $this->deferred[$item->getKey()] = $item; return $this->commit(); }</code>
이 save
메서드는 SymfonyComponentCacheCacheItem
유형의 매개변수만 전달할 수 있습니다. 다른 유형을 전달하면 false
이 반환됩니다.
현재 상황은 캐싱을 사용하는 클래스 라이브러리를 작성하려면 PSR-6
뿐만 아니라 특정 psr/cache
구현을 종속성으로 지정해야 한다는 것입니다. 반면, PSR-3
로그 인터페이스를 보면, 로깅 기능이 필요한 클래스 라이브러리를 작성하려면 psr/log
만 도입하면 되고, 특별한 구현은 필요하지 않습니다.
제 생각에는 PSR-6
에는 CacheItemInterface
인터페이스가 필요하지 않으며 save
메서드를 save($key, $value, $expire_at)
으로 변경하면 됩니다.
packagist에서 캐시를 검색해 보니 doctrine/cache
sonata-project/cache
illuminate/cache
등 일부 잘 알려진 캐시 라이브러리가 PSR-6
을 따르기로 선택하지 않았습니다.
지금은 PSR-6
CacheItemPoolInterface
인터페이스를 구현할 때 save
메소드에 대해 혼란스러웠습니다. save
메소드는 CacheItemInterface
유형의 매개변수만 받았지만 CacheItemInterface
인터페이스는 유사한 메소드를 제공하지 않았습니다. getExpireTime
로 인해 CacheItemPoolInterface
은 캐시 항목의 만료 시간을 얻을 수 없어 캐시 저장소에 데이터를 올바르게 쓸 수 없게 됩니다.
symfony/cache php-cache/cache tedious/Stash와 같은 잘 알려진 여러 PSR-6
구현을 본 적이 있지만 이러한 구현 버전은 save
메서드를 구현할 때 그다지 우아하지 않습니다.
예를 들어symfony/cache
<code>public function save(CacheItemInterface $item) { if (!$item instanceof CacheItem) { return false; } if ($this->deferred) { $this->commit(); } $this->deferred[$item->getKey()] = $item; return $this->commit(); }</code>
이 save
메서드는 SymfonyComponentCacheCacheItem
유형의 매개변수만 전달할 수 있습니다. 다른 유형을 전달하면 false
이 반환됩니다.
현재 상황은 캐싱을 사용하는 클래스 라이브러리를 작성하려면 PSR-6
뿐만 아니라 특정 psr/cache
구현을 종속성으로 지정해야 한다는 것입니다. 반면, PSR-3
로그 인터페이스를 보면, 로깅 기능이 필요한 클래스 라이브러리를 작성하려면 psr/log
만 도입하면 되고, 특별한 구현은 필요하지 않습니다.
제 생각에는 PSR-6
에는 CacheItemInterface
인터페이스가 필요하지 않으며 save
메서드를 save($key, $value, $expire_at)
으로 변경하면 됩니다.
packagist에서 캐시를 검색해 보니 doctrine/cache
sonata-project/cache
illuminate/cache
등 일부 잘 알려진 캐시 라이브러리가 PSR-6
을 따르기로 선택하지 않았습니다.