37 lines
1.1 KiB
PHP
37 lines
1.1 KiB
PHP
<?php
|
|
namespace nulib\db\_private;
|
|
|
|
use DateTimeInterface;
|
|
use nulib\php\time\Date;
|
|
use nulib\php\time\DateTime;
|
|
use nulib\str;
|
|
|
|
trait Tbindings {
|
|
static function is_sqldate(string $date): bool {
|
|
return preg_match('/^\d{4}-\d{2}-\d{2}(?: \d{2}:\d{2}:\d{2})?$/', $date);
|
|
}
|
|
|
|
protected function verifixBindings(&$value): void {
|
|
if ($value instanceof Date) {
|
|
$value = $value->format('Y-m-d');
|
|
} elseif ($value instanceof DateTime) {
|
|
$value = $value->format('Y-m-d H:i:s');
|
|
} elseif ($value instanceof DateTimeInterface) {
|
|
$value = $value->format('Y-m-d H:i:s');
|
|
str::del_suffix($value, " 00:00:00");
|
|
} elseif (is_string($value)) {
|
|
if (self::is_sqldate($value)) {
|
|
# déjà dans le bon format
|
|
} elseif (Date::isa_date($value, true)) {
|
|
$value = new Date($value);
|
|
$value = $value->format('Y-m-d');
|
|
} elseif (DateTime::isa_datetime($value, true)) {
|
|
$value = new DateTime($value);
|
|
$value = $value->format('Y-m-d H:i:s');
|
|
}
|
|
} elseif (is_bool($value)) {
|
|
$value = $value? 1: 0;
|
|
}
|
|
}
|
|
}
|