blob: 76fa78ebb559db635c7a3f1e908e40fa5b6b54eb (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
|
<?php
namespace Wcms;
use DateTime;
use DateTimeImmutable;
use DateTimeZone;
abstract class Item
{
public function hydrate($datas = [])
{
$error = 0;
foreach ($datas as $key => $value) {
$method = 'set' . $key;
if (method_exists($this, $method)) {
if ($this->$method($value) === false) {
$error++;
}
}
}
if ($error > 0) {
return false;
} else {
return true;
}
}
public function dry()
{
$array = [];
$array = $this->obj2array($this, $array);
return $array;
}
public function obj2array($obj, &$arr)
{
if (!is_object($obj) && !is_array($obj)) {
$arr = $obj;
return $arr;
}
foreach ($obj as $key => $value) {
if (!empty($value)) {
$arr[$key] = array();
$this->obj2array($value, $arr[$key]);
} else {
$arr[$key] = $value;
}
}
return $arr;
}
public function dryold()
{
$array = [];
foreach (get_object_vars($this) as $var => $value) {
if (is_object($value) && is_subclass_of($value, get_class($this))) {
$array[$var] = $value->dry();
} else {
if (method_exists($this, $var)) {
$array[$var] = $this->$var();
} else {
$array[$var] = $value;
}
}
}
return get_object_vars($this);
// return $array;
}
/**
* Return any asked vars and their values of an object as associative array
*
* @param array $vars list of vars
* @return array Associative array `$var => $value`
*/
public function drylist(array $vars): array
{
$array = [];
foreach ($vars as $var) {
if (property_exists($this, $var)) {
$array[$var] = $this->$var;
}
}
return $array;
}
/**
* Tool for accessing different view of the same DateTimeImmutable var
*
* @param string $property DateTimeImmutable var to access
* @param string $option
*
* @return mixed string or false if propriety does not exist
*/
protected function datetransform(string $property, string $option = 'date')
{
if (property_exists($this, $property)) {
if ($option == 'string') {
return $this->$property->format(DateTime::ISO8601);
} elseif ($option == 'date' || $option == 'sort') {
return $this->$property;
} elseif ($option == 'hrdi') {
$now = new DateTimeImmutable("now", timezone_open("Europe/Paris"));
return hrdi($this->$property->diff($now));
} elseif ($option == 'pdate') {
return $this->$property->format('Y-m-d');
} elseif ($option == 'ptime') {
return $this->$property->format('H:i');
} elseif ($option == 'dmy') {
return $this->$property->format('d/m/Y');
}
} else {
return false;
}
}
}
|