Skip to content

Instantly share code, notes, and snippets.

@frosit
Created August 1, 2021 23:11
Show Gist options
  • Save frosit/476e5797bdbb6bf75c97054454f764a4 to your computer and use it in GitHub Desktop.
Save frosit/476e5797bdbb6bf75c97054454f764a4 to your computer and use it in GitHub Desktop.
Patch file that returns missing (deprecated) ArrayCache class, blocking composer install.
---
lib/Doctrine/Common/Cache/ArrayCache.php | 115 +++++++++++++++++++++++
1 file changed, 115 insertions(+)
create mode 100644 lib/Doctrine/Common/Cache/ArrayCache.php
diff --git a/lib/Doctrine/Common/Cache/ArrayCache.php b/lib/Doctrine/Common/Cache/ArrayCache.php
new file mode 100644
index 0000000..eca43b8
--- /dev/null
+++ b/lib/Doctrine/Common/Cache/ArrayCache.php
@@ -0,0 +1,115 @@
+<?php
+
+namespace Doctrine\Common\Cache;
+
+use function time;
+
+/**
+ * Array cache driver.
+ *
+ * @deprecated Deprecated without replacement in doctrine/cache 1.11. This class will be dropped in 2.0
+ *
+ * @link www.doctrine-project.org
+ */
+class ArrayCache extends CacheProvider
+{
+ /** @psalm-var array<string, array{mixed, int|bool}>> $data each element being a tuple of [$data, $expiration], where the expiration is int|bool */
+ private $data = [];
+
+ /** @var int */
+ private $hitsCount = 0;
+
+ /** @var int */
+ private $missesCount = 0;
+
+ /** @var int */
+ private $upTime;
+
+ /**
+ * {@inheritdoc}
+ */
+ public function __construct()
+ {
+ $this->upTime = time();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doFetch($id)
+ {
+ if (! $this->doContains($id)) {
+ $this->missesCount += 1;
+
+ return false;
+ }
+
+ $this->hitsCount += 1;
+
+ return $this->data[$id][0];
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doContains($id)
+ {
+ if (! isset($this->data[$id])) {
+ return false;
+ }
+
+ $expiration = $this->data[$id][1];
+
+ if ($expiration && $expiration < time()) {
+ $this->doDelete($id);
+
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doSave($id, $data, $lifeTime = 0)
+ {
+ $this->data[$id] = [$data, $lifeTime ? time() + $lifeTime : false];
+
+ return true;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doDelete($id)
+ {
+ unset($this->data[$id]);
+
+ return true;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doFlush()
+ {
+ $this->data = [];
+
+ return true;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function doGetStats()
+ {
+ return [
+ Cache::STATS_HITS => $this->hitsCount,
+ Cache::STATS_MISSES => $this->missesCount,
+ Cache::STATS_UPTIME => $this->upTime,
+ Cache::STATS_MEMORY_USAGE => null,
+ Cache::STATS_MEMORY_AVAILABLE => null,
+ ];
+ }
+}
--
2.30.1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment