[ Index ]

PHP Cross Reference of Joomla 4.2.2 documentation

title

Body

[close]

/libraries/vendor/typo3/phar-stream-wrapper/src/Phar/ -> Manifest.php (source)

   1  <?php
   2  declare(strict_types=1);
   3  namespace TYPO3\PharStreamWrapper\Phar;
   4  
   5  /*
   6   * This file is part of the TYPO3 project.
   7   *
   8   * It is free software; you can redistribute it and/or modify it under the terms
   9   * of the MIT License (MIT). For the full copyright and license information,
  10   * please read the LICENSE file that was distributed with this source code.
  11   *
  12   * The TYPO3 project - inspiring people to share!
  13   */
  14  
  15  class Manifest
  16  {
  17      /**
  18       * @param string $content
  19       * @return self
  20       * @see http://php.net/manual/en/phar.fileformat.phar.php
  21       */
  22      public static function fromContent(string $content): self
  23      {
  24          $target = new static();
  25          $target->manifestLength = Reader::resolveFourByteLittleEndian($content, 0);
  26          $target->amountOfFiles = Reader::resolveFourByteLittleEndian($content, 4);
  27          $target->flags = Reader::resolveFourByteLittleEndian($content, 10);
  28          $target->aliasLength = Reader::resolveFourByteLittleEndian($content, 14);
  29          $target->alias = substr($content, 18, $target->aliasLength);
  30          $target->metaDataLength = Reader::resolveFourByteLittleEndian($content, 18 + $target->aliasLength);
  31          $target->metaData = substr($content, 22 + $target->aliasLength, $target->metaDataLength);
  32  
  33          $apiVersionNibbles = Reader::resolveTwoByteBigEndian($content, 8);
  34          $target->apiVersion = implode('.', [
  35              ($apiVersionNibbles & 0xf000) >> 12,
  36              ($apiVersionNibbles & 0x0f00) >> 8,
  37              ($apiVersionNibbles & 0x00f0) >> 4,
  38          ]);
  39  
  40          return $target;
  41      }
  42  
  43      /**
  44       * @var int
  45       */
  46      private $manifestLength;
  47  
  48      /**
  49       * @var int
  50       */
  51      private $amountOfFiles;
  52  
  53      /**
  54       * @var string
  55       */
  56      private $apiVersion;
  57  
  58      /**
  59       * @var int
  60       */
  61      private $flags;
  62  
  63      /**
  64       * @var int
  65       */
  66      private $aliasLength;
  67  
  68      /**
  69       * @var string
  70       */
  71      private $alias;
  72  
  73      /**
  74       * @var int
  75       */
  76      private $metaDataLength;
  77  
  78      /**
  79       * @var string
  80       */
  81      private $metaData;
  82  
  83      /**
  84       * Avoid direct instantiation.
  85       */
  86      private function __construct()
  87      {
  88      }
  89  
  90      /**
  91       * @return int
  92       */
  93      public function getManifestLength(): int
  94      {
  95          return $this->manifestLength;
  96      }
  97  
  98      /**
  99       * @return int
 100       */
 101      public function getAmountOfFiles(): int
 102      {
 103          return $this->amountOfFiles;
 104      }
 105  
 106      /**
 107       * @return string
 108       */
 109      public function getApiVersion(): string
 110      {
 111          return $this->apiVersion;
 112      }
 113  
 114      /**
 115       * @return int
 116       */
 117      public function getFlags(): int
 118      {
 119          return $this->flags;
 120      }
 121  
 122      /**
 123       * @return int
 124       */
 125      public function getAliasLength(): int
 126      {
 127          return $this->aliasLength;
 128      }
 129  
 130      /**
 131       * @return string
 132       */
 133      public function getAlias(): string
 134      {
 135          return $this->alias;
 136      }
 137  
 138      /**
 139       * @return int
 140       */
 141      public function getMetaDataLength(): int
 142      {
 143          return $this->metaDataLength;
 144      }
 145  
 146      /**
 147       * @return string
 148       */
 149      public function getMetaData(): string
 150      {
 151          return $this->metaData;
 152      }
 153  
 154      /**
 155       * @return mixed|null
 156       */
 157      public function deserializeMetaData()
 158      {
 159          if (empty($this->metaData)) {
 160              return null;
 161          }
 162  
 163          $result = unserialize($this->metaData, ['allowed_classes' => false]);
 164  
 165          $serialized = json_encode($result);
 166          if (strpos($serialized, '__PHP_Incomplete_Class_Name') !== false) {
 167              throw new DeserializationException(
 168                  'Meta-data contains serialized object',
 169                  1539623382
 170              );
 171          }
 172  
 173          return $result;
 174      }
 175  }


Generated: Wed Sep 7 05:41:13 2022 Chilli.vc Blog - For Webmaster,Blog-Writer,System Admin and Domainer