1 | <?php |
||
23 | abstract class AbstractUnit implements UnitInterface |
||
24 | { |
||
25 | /** |
||
26 | * @var string |
||
27 | */ |
||
28 | private $name; |
||
29 | |||
30 | /** |
||
31 | * @var ConverterInterface |
||
32 | */ |
||
33 | private $converter; |
||
34 | |||
35 | 3 | private function __construct($name, ConverterInterface $converter) |
|
40 | |||
41 | 8 | private function getConverter() |
|
45 | |||
46 | /** |
||
47 | * {@inheritdoc} |
||
48 | */ |
||
49 | 8 | final public function getName() |
|
53 | |||
54 | /** |
||
55 | * {@inheritdoc} |
||
56 | */ |
||
57 | 3 | final public function getMeasure() |
|
61 | |||
62 | /** |
||
63 | * {@inheritdoc} |
||
64 | */ |
||
65 | 2 | final public function getCalculator() |
|
69 | |||
70 | /** |
||
71 | * {@inheritdoc} |
||
72 | */ |
||
73 | 1 | final public function equals(UnitInterface $other) |
|
77 | |||
78 | /** |
||
79 | * {@inheritdoc} |
||
80 | */ |
||
81 | 2 | final public function isConvertible(UnitInterface $other) |
|
85 | |||
86 | /** |
||
87 | * {@inheritdoc} |
||
88 | */ |
||
89 | 4 | final public function convert(UnitInterface $other, $quantity) |
|
93 | |||
94 | /** |
||
95 | * @var Unit[] |
||
96 | */ |
||
97 | protected static $units; |
||
98 | |||
99 | 13 | final public static function __callStatic($name, $args) |
|
100 | { |
||
101 | 13 | if (!isset(static::$units[$name])) { |
|
102 | 3 | static::$units[$name] = new static($name, static::findConverter($name)); |
|
103 | } |
||
104 | |||
105 | 13 | return static::$units[$name]; |
|
106 | } |
||
107 | |||
108 | /** |
||
109 | * Returns converter for given unit name. |
||
110 | * The only function to change in child classes. |
||
111 | * XXX Should be defined as abstract but not supported in PHP5. |
||
112 | * @param string $name |
||
113 | * @throws InvalidConfigException |
||
114 | * @return ConverterInterface |
||
115 | */ |
||
116 | protected static function findConverter($name) |
||
120 | } |
||
121 |
This check looks from parameters that have been defined for a function or method, but which are not used in the method body.