2022-08-15 21:22:01 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace Arendsen\FluxQueryBuilder;
|
|
|
|
|
|
2022-08-16 14:46:06 +00:00
|
|
|
use Arendsen\FluxQueryBuilder\Type\ArrayType;
|
|
|
|
|
use Arendsen\FluxQueryBuilder\Type\BooleanType;
|
2022-08-15 21:22:01 +00:00
|
|
|
use Arendsen\FluxQueryBuilder\Type\Time;
|
|
|
|
|
use DateTime;
|
|
|
|
|
|
|
|
|
|
class Type
|
|
|
|
|
{
|
2022-08-16 15:06:32 +00:00
|
|
|
public function __construct($value, $settings = [])
|
2022-08-15 21:22:01 +00:00
|
|
|
{
|
|
|
|
|
$this->value = $value;
|
2022-08-16 15:06:32 +00:00
|
|
|
$this->settings = $settings;
|
2022-08-15 21:22:01 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function __toString(): string
|
|
|
|
|
{
|
|
|
|
|
switch (gettype($this->value)) {
|
|
|
|
|
case 'object':
|
|
|
|
|
if ($this->value instanceof DateTime) {
|
|
|
|
|
return new Time($this->value);
|
|
|
|
|
}
|
|
|
|
|
return $this->value->__toString();
|
2022-08-16 14:46:06 +00:00
|
|
|
case 'string':
|
|
|
|
|
return '"' . $this->value . '"';
|
|
|
|
|
case 'boolean':
|
|
|
|
|
return new BooleanType($this->value);
|
|
|
|
|
case 'array':
|
2022-08-16 15:06:32 +00:00
|
|
|
return new ArrayType($this->value, $this->settings);
|
2022-08-15 21:22:01 +00:00
|
|
|
default:
|
|
|
|
|
return (string)$this->value;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|