1
|
|
|
<?php |
2
|
|
|
declare(strict_types=1); |
3
|
|
|
/** |
4
|
|
|
* Created by PhpStorm. |
5
|
|
|
* User: benedikt |
6
|
|
|
* Date: 1/30/18 |
7
|
|
|
* Time: 5:32 PM |
8
|
|
|
*/ |
9
|
|
|
|
10
|
|
|
namespace Tfboe\FmLib\Entity\Helpers; |
11
|
|
|
|
12
|
|
|
|
13
|
|
|
use Tfboe\FmLib\Exceptions\PropertyNotExistingException; |
14
|
|
|
|
15
|
|
|
/** |
16
|
|
|
* Interface SubClassDataInterface |
17
|
|
|
* @package Tfboe\FmLib\Entity\Helpers |
18
|
|
|
*/ |
19
|
|
|
interface SubClassDataInterface |
20
|
|
|
{ |
21
|
|
|
//<editor-fold desc="Public Methods"> |
22
|
|
|
/** |
23
|
|
|
* Adds an subclass property if it is not already existent. The default value is used as value. |
24
|
|
|
* @param string $name the property name |
25
|
|
|
* @param mixed $default the default value for the property |
26
|
|
|
* @return $this|SubClassData |
27
|
|
|
*/ |
28
|
|
|
public function addPropertyIfNotExistent(string $name, $default); |
29
|
|
|
|
30
|
|
|
/** |
31
|
|
|
* clones the subclass data from other into this |
32
|
|
|
* @param SubClassData $other |
|
|
|
|
33
|
|
|
*/ |
34
|
|
|
public function cloneSubClassDataFrom($other); |
35
|
|
|
|
36
|
|
|
/** |
37
|
|
|
* Gets a property or throws an error if the property does not exist. |
38
|
|
|
* @param string $name the name of the property |
39
|
|
|
* @return mixed the value of the property |
40
|
|
|
* @throws PropertyNotExistingException |
41
|
|
|
*/ |
42
|
|
|
public function getProperty($name); |
43
|
|
|
|
44
|
|
|
/** |
45
|
|
|
* Checks if the contains the given property as subclass data. |
46
|
|
|
* @param string $property the property name |
47
|
|
|
* @return bool true if it has the property and false otherwise |
48
|
|
|
*/ |
49
|
|
|
public function hasProperty(string $property): bool; |
50
|
|
|
|
51
|
|
|
/** |
52
|
|
|
* Initializes the subclassData structure and adds the given keys with null values to it. |
53
|
|
|
* @param string[] $keys the keys of the subclass data properties (the names). |
54
|
|
|
* @return $this|SubClassData |
55
|
|
|
*/ |
56
|
|
|
public function initSubClassData(array $keys); |
57
|
|
|
|
58
|
|
|
/** |
59
|
|
|
* Checks if a method with the given name exists considering also getter and setter for subclass properties |
60
|
|
|
* @param string $method |
61
|
|
|
* @return bool |
62
|
|
|
*/ |
63
|
|
|
public function methodExists(string $method): bool; |
64
|
|
|
|
65
|
|
|
/** |
66
|
|
|
* Sets a property with the given name and the given value |
67
|
|
|
* @param string $name the name of the property to set |
68
|
|
|
* @param mixed $value the new value for the property |
69
|
|
|
* @return $this|SubClassData |
70
|
|
|
* @throws PropertyNotExistingException |
71
|
|
|
*/ |
72
|
|
|
public function setProperty(string $name, $value); |
73
|
|
|
//</editor-fold desc="Public Methods"> |
74
|
|
|
} |