mirror of
https://gh.wpcy.net/https://github.com/rilustrisimo/freescout-support.git
synced 2026-04-26 14:02:20 +08:00
118 lines
2.2 KiB
PHP
118 lines
2.2 KiB
PHP
<?php declare(strict_types=1);
|
|
/**
|
|
* Part of earth project.
|
|
*
|
|
* @copyright Copyright (C) 2019 $Asikart.
|
|
* @license LGPL-2.0-or-later
|
|
*/
|
|
|
|
namespace Windwalker\Structure;
|
|
|
|
/**
|
|
* The ValueReference class.
|
|
*
|
|
* @since 3.5.1
|
|
*/
|
|
class ValueReference
|
|
{
|
|
/**
|
|
* Property path.
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $path;
|
|
|
|
/**
|
|
* Property separator.
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $separator;
|
|
|
|
/**
|
|
* ValueReference constructor.
|
|
*
|
|
* @param string $path
|
|
* @param string $separator
|
|
*/
|
|
public function __construct(string $path, ?string $separator = null)
|
|
{
|
|
$this->path = $path;
|
|
$this->separator = $separator;
|
|
}
|
|
|
|
/**
|
|
* Get from Structure.
|
|
*
|
|
* @param Structure|array|object $structure
|
|
* @param mixed $default
|
|
*
|
|
* @return mixed
|
|
*
|
|
* @since 3.5.1
|
|
*/
|
|
public function get($structure, $default = null)
|
|
{
|
|
if ($structure instanceof Structure) {
|
|
return $structure->get($this->path, $default, $this->separator);
|
|
}
|
|
|
|
return StructureHelper::getByPath($structure, $this->path, $this->separator ?: '.');
|
|
}
|
|
|
|
/**
|
|
* Method to get property Path
|
|
*
|
|
* @return string
|
|
*
|
|
* @since 3.5.1
|
|
*/
|
|
public function getPath(): string
|
|
{
|
|
return $this->path;
|
|
}
|
|
|
|
/**
|
|
* Method to set property path
|
|
*
|
|
* @param string $path
|
|
*
|
|
* @return static Return self to support chaining.
|
|
*
|
|
* @since 3.5.1
|
|
*/
|
|
public function setPath(string $path)
|
|
{
|
|
$this->path = $path;
|
|
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* Method to get property Separator
|
|
*
|
|
* @return string
|
|
*
|
|
* @since 3.5.1
|
|
*/
|
|
public function getSeparator(): string
|
|
{
|
|
return $this->separator;
|
|
}
|
|
|
|
/**
|
|
* Method to set property separator
|
|
*
|
|
* @param string $separator
|
|
*
|
|
* @return static Return self to support chaining.
|
|
*
|
|
* @since 3.5.1
|
|
*/
|
|
public function setSeparator(string $separator)
|
|
{
|
|
$this->separator = $separator;
|
|
|
|
return $this;
|
|
}
|
|
}
|