aboutsummaryrefslogtreecommitdiff
path: root/app/class/Item.php
blob: 10d35d78faf5b5904b7cbaf8ae4237fc134a6888 (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
<?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 = [];
        foreach ($this as $var => $value) {
            $array[$var] = $this->$var();
        }
        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(null, 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;
		}
	}

}


?>