You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
110 lines
2.5 KiB
110 lines
2.5 KiB
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace League\Flysystem;
|
|
|
|
class DirectoryAttributes implements StorageAttributes
|
|
{
|
|
use ProxyArrayAccessToProperties;
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
private $type = StorageAttributes::TYPE_DIRECTORY;
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
private $path;
|
|
|
|
/**
|
|
* @var string|null
|
|
*/
|
|
private $visibility;
|
|
|
|
/**
|
|
* @var int|null
|
|
*/
|
|
private $lastModified;
|
|
|
|
/**
|
|
* @var array
|
|
*/
|
|
private $extraMetadata;
|
|
|
|
public function __construct(string $path, ?string $visibility = null, ?int $lastModified = null, array $extraMetadata = [])
|
|
{
|
|
$this->path = $path;
|
|
$this->visibility = $visibility;
|
|
$this->lastModified = $lastModified;
|
|
$this->extraMetadata = $extraMetadata;
|
|
}
|
|
|
|
public function path(): string
|
|
{
|
|
return $this->path;
|
|
}
|
|
|
|
public function type(): string
|
|
{
|
|
return StorageAttributes::TYPE_DIRECTORY;
|
|
}
|
|
|
|
public function visibility(): ?string
|
|
{
|
|
return $this->visibility;
|
|
}
|
|
|
|
public function lastModified(): ?int
|
|
{
|
|
return $this->lastModified;
|
|
}
|
|
|
|
public function extraMetadata(): array
|
|
{
|
|
return $this->extraMetadata;
|
|
}
|
|
|
|
public function isFile(): bool
|
|
{
|
|
return false;
|
|
}
|
|
|
|
public function isDir(): bool
|
|
{
|
|
return true;
|
|
}
|
|
|
|
public function withPath(string $path): StorageAttributes
|
|
{
|
|
$clone = clone $this;
|
|
$clone->path = $path;
|
|
|
|
return $clone;
|
|
}
|
|
|
|
public static function fromArray(array $attributes): StorageAttributes
|
|
{
|
|
return new DirectoryAttributes(
|
|
$attributes[StorageAttributes::ATTRIBUTE_PATH],
|
|
$attributes[StorageAttributes::ATTRIBUTE_VISIBILITY] ?? null,
|
|
$attributes[StorageAttributes::ATTRIBUTE_LAST_MODIFIED] ?? null,
|
|
$attributes[StorageAttributes::ATTRIBUTE_EXTRA_METADATA] ?? []
|
|
);
|
|
}
|
|
|
|
/**
|
|
* @inheritDoc
|
|
*/
|
|
public function jsonSerialize(): array
|
|
{
|
|
return [
|
|
StorageAttributes::ATTRIBUTE_TYPE => $this->type,
|
|
StorageAttributes::ATTRIBUTE_PATH => $this->path,
|
|
StorageAttributes::ATTRIBUTE_VISIBILITY => $this->visibility,
|
|
StorageAttributes::ATTRIBUTE_LAST_MODIFIED => $this->lastModified,
|
|
StorageAttributes::ATTRIBUTE_EXTRA_METADATA => $this->extraMetadata,
|
|
];
|
|
}
|
|
}
|
|
|