%PDF- %PDF-
| Direktori : /www/varak.net/nextcloud.varak.net/3rdparty/php-opencloud/openstack/src/Common/Resource/ |
| Current File : /www/varak.net/nextcloud.varak.net/3rdparty/php-opencloud/openstack/src/Common/Resource/Alias.php |
<?php
declare(strict_types=1);
namespace OpenStack\Common\Resource;
class Alias
{
/**
* @var string
*/
public $propertyName;
/**
* @var bool
*/
private $isList;
/**
* @var string
*/
private $className;
/**
* @param string $propertyName A name of the property in target resource class
* @param string|null $className A class name for the property value
* @param bool $list Whether value of the property should be treated as a list or not
*/
public function __construct(string $propertyName, string $className = null, bool $list = false)
{
$this->isList = $list;
$this->propertyName = $propertyName;
$this->className = $className && class_exists($className) ? $className : null;
}
public function getValue(ResourceInterface $resource, $value)
{
if (null === $value || !$this->className) {
return $value;
} elseif ($this->isList && is_array($value)) {
$array = [];
foreach ($value as $subVal) {
$array[] = $resource->model($this->className, $subVal);
}
return $array;
} elseif (\DateTimeImmutable::class === $this->className) {
return new \DateTimeImmutable($value);
}
return $resource->model($this->className, $value);
}
}