Test Failed
Branch trunk (412648)
by SuperNova.WS
03:40
created

AccessMagic::asArray()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 0
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
<?php
2
3
/**
4
 * Created by Gorlum 30.07.2016 9:54
5
 */
6
7
namespace Common;
8
9
/**
10
 * Class AccessMagic
11
 *
12
 * Implements all magic methods for accessing non-exists property
13
 * Used to distinguish how class properties should be accessed like ArrayAccess
14
 *
15
 * @package Common
16
 */
17
class AccessMagic implements \IContainer {
18
19
  /**
20
   * @var GlobalContainer $services
21
   */
22
  protected $services;
23
24
  /**
25
   * Property values
26
   *
27
   * @var array
28
   */
29
  protected $values = array();
30
31
  /**
32
   * AccessMagic constructor.
33
   *
34
   * @param GlobalContainer|null $services
35
   */
36
  public function __construct(GlobalContainer $services = null) {
37
    $this->services = empty($services) ? \classSupernova::$gc : $services;
38
  }
39
40
41
  /**
42
   * Magic setter
43
   *
44
   * @param string $name
45
   * @param mixed  $value
46
   */
47
  public function __set($name, $value) {
48
    $this->values[$name] = $value;
49
  }
50
51
  /**
52
   * Magic getter
53
   *
54
   * @param string $name
55
   *
56
   * @return mixed
57
   */
58
  public function __get($name) {
59
    return $this->__isset($name) ? $this->values[$name] : null;
60
  }
61
62
  /**
63
   * Magic checker for property set
64
   *
65
   * @param string $name
66
   *
67
   * @return boolean
68
   */
69
  public function __isset($name) {
70
    return array_key_exists($name, $this->values);
71
  }
72
73
  /**
74
   * Magic un-setter
75
   *
76
   * @param string $name
77
   */
78
  public function __unset($name) {
79
    unset($this->values[$name]);
80
  }
81
82
  /**
83
   * Extracts values as array [$propertyName => $propertyValue]
84
   *
85
   * @return array
86
   */
87
  public function asArray() {
88
    return $this->values;
89
  }
90
91
  /**
92
   * Is container contains no data
93
   *
94
   * @return bool
95
   */
96
  public function isEmpty() {
97
    return empty($this->values);
98
  }
99
100
  /**
101
   * Clears container contents
102
   */
103
  public function clear() {
104
    $this->values = array();
105
  }
106
107
}
108