‪TYPO3CMS  11.5
PackageCacheEntry.php
Go to the documentation of this file.
1 <?php
2 
3 /*
4  * This file is part of the TYPO3 CMS project.
5  *
6  * It is free software; you can redistribute it and/or modify it under
7  * the terms of the GNU General Public License, either version 2
8  * of the License, or any later version.
9  *
10  * For the full copyright and license information, please read the
11  * LICENSE.txt file that was distributed with this source code.
12  *
13  * The TYPO3 project - inspiring people to share!
14  */
15 
17 
24 
33 {
38  private array ‪$configuration;
39 
44  private array ‪$aliasMap;
45 
49  private array ‪$composerNameMap;
50 
54  private array ‪$packages;
55 
64  private ?string ‪$identifier = null;
65 
66  private function ‪__construct(
67  array ‪$configuration,
68  array ‪$aliasMap,
69  array ‪$composerNameMap,
70  array ‪$packages
71  ) {
72  $this->configuration = ‪$configuration;
73  $this->aliasMap = ‪$aliasMap;
74  $this->composerNameMap = ‪$composerNameMap;
75  $this->packages = ‪$packages;
76  }
77 
84  public static function ‪ensureValidPackageConfiguration(array ‪$configuration): void
85  {
86  if ((‪$configuration['version'] ?? 0) < 5) {
87  throw new ‪PackageStatesUnavailableException('The PackageStates.php file is either corrupt or unavailable.', 1381507733);
88  }
89  }
90 
91  public static function ‪fromPackageData(
92  array $packageStatesConfiguration,
93  array $packageAliasMap,
94  array $composerNameToPackageKeyMap,
95  array $packageObjects
96  ): self {
97  ‪self::ensureValidPackageConfiguration($packageStatesConfiguration);
98 
99  return new self(
100  $packageStatesConfiguration,
101  $packageAliasMap,
102  $composerNameToPackageKeyMap,
103  $packageObjects
104  );
105  }
106 
107  public static function ‪fromCache(array $packageData): self
108  {
109  try {
110  ‪self::ensureValidPackageConfiguration($packageData['packageStatesConfiguration'] ?? []);
112  // Invalidate the cache entry
113  throw new ‪PackageManagerCacheUnavailableException('The package state cache could not be loaded.', 1393883341, $e);
114  }
115  $cacheEntry = new self(
116  $packageData['packageStatesConfiguration'],
117  $packageData['packageAliasMap'],
118  $packageData['composerNameToPackageKeyMap'],
119  unserialize($packageData['packageObjects'], [
120  'allowed_classes' => [
121  Package::class,
122  MetaData::class,
123  PackageConstraint::class,
124  \stdClass::class,
125  ],
126  ])
127  );
128  $cacheEntry->identifier = $packageData['identifier'] ?? null;
129 
130  return $cacheEntry;
131  }
132 
133  public function ‪serialize(): string
134  {
135  return var_export(
136  [
137  'identifier' => $this->identifier,
138  'packageStatesConfiguration' => $this->configuration,
139  'packageAliasMap' => $this->aliasMap,
140  'composerNameToPackageKeyMap' => $this->composerNameMap,
141  'packageObjects' => ‪serialize($this->packages),
142  ],
143  true
144  );
145  }
146 
147  public function ‪getIdentifier(): ?string
148  {
149  return ‪$this->identifier;
150  }
151 
152  public function ‪withIdentifier(string ‪$identifier): self
153  {
154  $newEntry = clone $this;
155  $newEntry->identifier = ‪$identifier;
156 
157  return $newEntry;
158  }
159 
160  public function ‪getConfiguration(): array
161  {
163  }
164 
165  public function ‪getAliasMap(): array
166  {
167  return ‪$this->aliasMap;
168  }
169 
170  public function ‪getComposerNameMap(): array
171  {
173  }
174 
178  public function ‪getPackages(): array
179  {
180  return ‪$this->packages;
181  }
182 }
‪TYPO3\CMS\Core\Package\Cache\PackageCacheEntry\$packages
‪array $packages
Definition: PackageCacheEntry.php:54
‪TYPO3\CMS\Core\Package\Cache\PackageCacheEntry\__construct
‪__construct(array $configuration, array $aliasMap, array $composerNameMap, array $packages)
Definition: PackageCacheEntry.php:66
‪TYPO3\CMS\Core\Package\Cache\PackageCacheEntry\$identifier
‪string $identifier
Definition: PackageCacheEntry.php:64
‪TYPO3\CMS\Core\Package\Cache\PackageCacheEntry\getConfiguration
‪getConfiguration()
Definition: PackageCacheEntry.php:160
‪TYPO3\CMS\Core\Package\Cache\PackageCacheEntry\ensureValidPackageConfiguration
‪static ensureValidPackageConfiguration(array $configuration)
Definition: PackageCacheEntry.php:84
‪TYPO3\CMS\Core\Package\Cache\PackageCacheEntry\$aliasMap
‪array $aliasMap
Definition: PackageCacheEntry.php:44
‪TYPO3\CMS\Core\Package\Cache\PackageCacheEntry\fromCache
‪static fromCache(array $packageData)
Definition: PackageCacheEntry.php:107
‪TYPO3\CMS\Core\Package\Cache\PackageCacheEntry\fromPackageData
‪static fromPackageData(array $packageStatesConfiguration, array $packageAliasMap, array $composerNameToPackageKeyMap, array $packageObjects)
Definition: PackageCacheEntry.php:91
‪TYPO3\CMS\Core\Package\Cache\PackageCacheEntry\getPackages
‪PackageInterface[] getPackages()
Definition: PackageCacheEntry.php:178
‪TYPO3\CMS\Core\Package\Cache\PackageCacheEntry
Definition: PackageCacheEntry.php:33
‪TYPO3\CMS\Core\Package\PackageInterface
Definition: PackageInterface.php:22
‪TYPO3\CMS\Core\Package\Cache\PackageCacheEntry\getAliasMap
‪getAliasMap()
Definition: PackageCacheEntry.php:165
‪TYPO3\CMS\Core\Package\Exception\PackageStatesUnavailableException
Definition: PackageStatesUnavailableException.php:23
‪TYPO3\CMS\Core\Package\Exception\PackageManagerCacheUnavailableException
Definition: PackageManagerCacheUnavailableException.php:24
‪TYPO3\CMS\Core\Package\Cache\PackageCacheEntry\$configuration
‪array $configuration
Definition: PackageCacheEntry.php:38
‪TYPO3\CMS\Core\Package\Package
Definition: Package.php:28
‪TYPO3\CMS\Core\Package\MetaData\PackageConstraint
Definition: PackageConstraint.php:22
‪TYPO3\CMS\Core\Package\MetaData
Definition: PackageConstraint.php:16
‪TYPO3\CMS\Core\Package\Cache\PackageCacheEntry\serialize
‪serialize()
Definition: PackageCacheEntry.php:133
‪TYPO3\CMS\Core\Package\Cache
Definition: ComposerPackageArtifact.php:16
‪TYPO3\CMS\Core\Package\Cache\PackageCacheEntry\$composerNameMap
‪array $composerNameMap
Definition: PackageCacheEntry.php:49
‪TYPO3\CMS\Core\Package\Cache\PackageCacheEntry\getComposerNameMap
‪getComposerNameMap()
Definition: PackageCacheEntry.php:170
‪TYPO3\CMS\Core\Package\Cache\PackageCacheEntry\getIdentifier
‪getIdentifier()
Definition: PackageCacheEntry.php:147
‪TYPO3\CMS\Core\Package\Cache\PackageCacheEntry\withIdentifier
‪withIdentifier(string $identifier)
Definition: PackageCacheEntry.php:152