PluginProbe
Fluent Forms – Customizable Contact Forms, Survey, Quiz, & Conversational Form Builder / 6.2.5
Fluent Forms – Customizable Contact Forms, Survey, Quiz, & Conversational Form Builder v6.2.5
6.2.14 6.2.13 6.2.12 6.2.10 6.2.11 6.2.9 6.2.8 6.2.7 6.2.6 6.2.5 6.2.4 6.2.3 6.2.2 3.6.22 3.6.31 3.6.40 3.6.41 3.6.42 3.6.50 3.6.51 3.6.60 3.6.61 3.6.62 3.6.64 3.6.65 All 196 releases
fluentform / app / Services / Spout / Reader / XLSX / Helper / SharedStringsCaching / InMemoryStrategy.php

InMemoryStrategy.php in Fluent Forms – Customizable Contact Forms, Survey, Quiz, & Conversational Form Builder 6.2.5, at app/Services/Spout/Reader/XLSX/Helper/SharedStringsCaching/InMemoryStrategy.php

84 lines 2.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace Box\Spout\Reader\XLSX\Helper\SharedStringsCaching;
4
5 use Box\Spout\Reader\Exception\SharedStringNotFoundException;
6
7 /**
8 * Class InMemoryStrategy
9 *
10 * This class implements the in-memory caching strategy for shared strings.
11 * This strategy is used when the number of unique strings is low, compared to the memory available.
12 *
13 * @package Box\Spout\Reader\XLSX\Helper\SharedStringsCaching
14 */
15 class InMemoryStrategy implements CachingStrategyInterface
16 {
17 /** @var \SplFixedArray Array used to cache the shared strings */
18 protected $inMemoryCache;
19
20 /** @var bool Whether the cache has been closed */
21 protected $isCacheClosed;
22
23 /**
24 * @param int $sharedStringsUniqueCount Number of unique shared strings
25 */
26 public function __construct($sharedStringsUniqueCount)
27 {
28 $this->inMemoryCache = new \SplFixedArray($sharedStringsUniqueCount);
29 $this->isCacheClosed = false;
30 }
31
32 /**
33 * Adds the given string to the cache.
34 *
35 * @param string $sharedString The string to be added to the cache
36 * @param int $sharedStringIndex Index of the shared string in the sharedStrings.xml file
37 * @return void
38 */
39 public function addStringForIndex($sharedString, $sharedStringIndex)
40 {
41 if (!$this->isCacheClosed) {
42 $this->inMemoryCache->offsetSet($sharedStringIndex, $sharedString);
43 }
44 }
45
46 /**
47 * Closes the cache after the last shared string was added.
48 * This prevents any additional string from being added to the cache.
49 *
50 * @return void
51 */
52 public function closeCache()
53 {
54 $this->isCacheClosed = true;
55 }
56
57 /**
58 * Returns the string located at the given index from the cache.
59 *
60 * @param int $sharedStringIndex Index of the shared string in the sharedStrings.xml file
61 * @return string The shared string at the given index
62 * @throws \Box\Spout\Reader\Exception\SharedStringNotFoundException If no shared string found for the given index
63 */
64 public function getStringAtIndex($sharedStringIndex)
65 {
66 try {
67 return $this->inMemoryCache->offsetGet($sharedStringIndex);
68 } catch (\RuntimeException $e) {
69 throw new SharedStringNotFoundException("Shared string not found for index: $sharedStringIndex");
70 }
71 }
72
73 /**
74 * Destroys the cache, freeing memory and removing any created artifacts
75 *
76 * @return void
77 */
78 public function clearCache()
79 {
80 unset($this->inMemoryCache);
81 $this->isCacheClosed = false;
82 }
83 }
84