Visual Console Refactor: added a base Model class
Former-commit-id: 6051b7706686c9254851c2f9314f6c40bbc2af4d
This commit is contained in:
parent
c0e7256339
commit
9eebf18622
|
@ -0,0 +1,64 @@
|
|||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Models;
|
||||
|
||||
abstract class Model
|
||||
{
|
||||
|
||||
private $data;
|
||||
|
||||
|
||||
abstract function validateData(array $data): void;
|
||||
|
||||
|
||||
abstract function decode(array $data): array;
|
||||
|
||||
|
||||
private function __construct(array $unknownData)
|
||||
{
|
||||
$this->validateData($unknownData);
|
||||
$this->data = $this->decode($unknownData);
|
||||
}
|
||||
|
||||
|
||||
public static function fromArray(array $data): self
|
||||
{
|
||||
return new self($data);
|
||||
}
|
||||
|
||||
|
||||
public function toJson(): string
|
||||
{
|
||||
return \json_encode($this->data);
|
||||
}
|
||||
|
||||
|
||||
public function __toString(): string
|
||||
{
|
||||
return $this->toJson();
|
||||
}
|
||||
|
||||
|
||||
protected static function parseBool(mixed $value): boolean
|
||||
{
|
||||
if (\is_bool($value) === true) {
|
||||
return $value;
|
||||
} else if (\is_numeric($value) === true) {
|
||||
return $value > 0;
|
||||
} else if (\is_string($value) === true) {
|
||||
return $value === '1' || $value === 'true';
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
protected static function notEmptyStringOr(mixed $val, string $def): mixed
|
||||
{
|
||||
return (\is_string($val) === true && count($val) > 0) ? $val : $def;
|
||||
}
|
||||
|
||||
|
||||
}
|
Loading…
Reference in New Issue