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