119 lines
4.1 KiB
PHP
119 lines
4.1 KiB
PHP
<?php
|
||
|
||
namespace goodboyalex\php_components_pack\traits\JsonReWriter;
|
||
|
||
/**
|
||
* Часть кода класса JsonReWriter, отвечающая за методы чтения ключей и значений JSON.
|
||
*
|
||
* @author Александр Бабаев
|
||
* @package php_components_pack
|
||
* @version 1.0
|
||
* @since 1.1.0
|
||
*/
|
||
trait JsonReWriterReadTrait
|
||
{
|
||
/**
|
||
* Читает значение ключа JSON как целое число.
|
||
*
|
||
* @param string $key Ключ JSON.
|
||
* @param int $default Значение по умолчанию.
|
||
*
|
||
* @return int Значение ключа JSON или значение по умолчанию.
|
||
*/
|
||
public function ReadInt (string $key, int $default = 0): int
|
||
{
|
||
return (int)$this->Read($key, $default);
|
||
}
|
||
|
||
/**
|
||
* Читает значение ключа JSON.
|
||
*
|
||
* @param string $key Ключ JSON.
|
||
* @param mixed $default Значение по умолчанию.
|
||
*
|
||
* @return mixed Значение ключа JSON или значение по умолчанию.
|
||
*/
|
||
public function Read (string $key, mixed $default = null): mixed
|
||
{
|
||
if (!$this->IsKeyExists($key))
|
||
return $default;
|
||
|
||
$keys = $this->ParseKey($key);
|
||
|
||
// Получаем текущий массив данных
|
||
$current = $this->JsonData;
|
||
|
||
// Для каждого ключа до предпоследнего
|
||
for ($i = 0; $i < count($keys) - 1; $i++)
|
||
// - переходим ко вложенному массиву
|
||
$current = &$current[$keys[$i]];
|
||
|
||
// Возвращаем значение последнего ключа и если его нет, то возвращаем значение по умолчанию
|
||
return $current[$keys[count($keys) - 1]] ?? $default;
|
||
}
|
||
|
||
/**
|
||
* Читает значение ключа JSON как вещественное число.
|
||
*
|
||
* @param string $key Ключ JSON.
|
||
* @param float $default Значение по умолчанию.
|
||
*
|
||
* @return float Значение ключа JSON или значение по умолчанию.
|
||
*/
|
||
public function ReadFloat (string $key, float $default = 0.0): float
|
||
{
|
||
return (float)$this->Read($key, $default);
|
||
}
|
||
|
||
/**
|
||
* Читает значение ключа JSON как логическое значение.
|
||
*
|
||
* @param string $key Ключ JSON.
|
||
* @param bool $default Значение по умолчанию.
|
||
*
|
||
* @return bool Значение ключа JSON или значение по умолчанию.
|
||
*/
|
||
public function ReadBool (string $key, bool $default = false): bool
|
||
{
|
||
return (bool)$this->Read($key, $default);
|
||
}
|
||
|
||
/**
|
||
* Читает значение ключа JSON как массив.
|
||
*
|
||
* @param string $key Ключ JSON.
|
||
* @param array $default Значение по умолчанию.
|
||
*
|
||
* @return array Значение ключа JSON или значение по умолчанию.
|
||
*/
|
||
public function ReadArray (string $key, array $default = []): array
|
||
{
|
||
return (array)$this->Read($key, $default);
|
||
}
|
||
|
||
/**
|
||
* Читает значение ключа JSON как объект.
|
||
*
|
||
* @param string $key Ключ JSON.
|
||
* @param object $default Значение по умолчанию.
|
||
*
|
||
* @return object Значение ключа JSON или значение по умолчанию.
|
||
*/
|
||
public function ReadObject (string $key, object $default): object
|
||
{
|
||
return (object)$this->Read($key, $default);
|
||
}
|
||
|
||
/**
|
||
* Читает значение ключа JSON как строку.
|
||
*
|
||
* @param string $key Ключ JSON.
|
||
* @param string $default Значение по умолчанию.
|
||
*
|
||
* @return string Значение ключа JSON или значение по умолчанию.
|
||
*/
|
||
public function ReadString (string $key, string $default = ""): string
|
||
{
|
||
return (string)$this->Read($key, $default);
|
||
}
|
||
} |