123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- <?php
- declare(strict_types=1);
- namespace League\Flysystem;
- class FileAttributes implements StorageAttributes
- {
- use ProxyArrayAccessToProperties;
- /**
- * @var string
- */
- private $type = StorageAttributes::TYPE_FILE;
- /**
- * @var string
- */
- private $path;
- /**
- * @var int|null
- */
- private $fileSize;
- /**
- * @var string|null
- */
- private $visibility;
- /**
- * @var int|null
- */
- private $lastModified;
- /**
- * @var string|null
- */
- private $mimeType;
- /**
- * @var array
- */
- private $extraMetadata;
- public function __construct(
- string $path,
- ?int $fileSize = null,
- ?string $visibility = null,
- ?int $lastModified = null,
- ?string $mimeType = null,
- array $extraMetadata = []
- ) {
- $this->path = $path;
- $this->fileSize = $fileSize;
- $this->visibility = $visibility;
- $this->lastModified = $lastModified;
- $this->mimeType = $mimeType;
- $this->extraMetadata = $extraMetadata;
- }
- public function type(): string
- {
- return $this->type;
- }
- public function path(): string
- {
- return $this->path;
- }
- public function fileSize(): ?int
- {
- return $this->fileSize;
- }
- public function visibility(): ?string
- {
- return $this->visibility;
- }
- public function lastModified(): ?int
- {
- return $this->lastModified;
- }
- public function mimeType(): ?string
- {
- return $this->mimeType;
- }
- public function extraMetadata(): array
- {
- return $this->extraMetadata;
- }
- public function isFile(): bool
- {
- return true;
- }
- public function isDir(): bool
- {
- return false;
- }
- public function withPath(string $path): StorageAttributes
- {
- $clone = clone $this;
- $clone->path = $path;
- return $clone;
- }
- public static function fromArray(array $attributes): StorageAttributes
- {
- return new FileAttributes(
- $attributes[StorageAttributes::ATTRIBUTE_PATH],
- $attributes[StorageAttributes::ATTRIBUTE_FILE_SIZE] ?? null,
- $attributes[StorageAttributes::ATTRIBUTE_VISIBILITY] ?? null,
- $attributes[StorageAttributes::ATTRIBUTE_LAST_MODIFIED] ?? null,
- $attributes[StorageAttributes::ATTRIBUTE_MIME_TYPE] ?? null,
- $attributes[StorageAttributes::ATTRIBUTE_EXTRA_METADATA] ?? []
- );
- }
- public function jsonSerialize(): array
- {
- return [
- StorageAttributes::ATTRIBUTE_TYPE => self::TYPE_FILE,
- StorageAttributes::ATTRIBUTE_PATH => $this->path,
- StorageAttributes::ATTRIBUTE_FILE_SIZE => $this->fileSize,
- StorageAttributes::ATTRIBUTE_VISIBILITY => $this->visibility,
- StorageAttributes::ATTRIBUTE_LAST_MODIFIED => $this->lastModified,
- StorageAttributes::ATTRIBUTE_MIME_TYPE => $this->mimeType,
- StorageAttributes::ATTRIBUTE_EXTRA_METADATA => $this->extraMetadata,
- ];
- }
- }
|