1212 */
1313final class Color implements Extension \ColorExtension
1414{
15+ private Extension \NumberExtension $ numberExtension ;
16+
1517 /**
1618 * @var string[]
1719 */
@@ -20,7 +22,6 @@ final class Color implements Extension\ColorExtension
2022 'purple ' , 'teal ' , 'lime ' , 'blue ' , 'silver ' ,
2123 'gray ' , 'yellow ' , 'fuchsia ' , 'aqua ' , 'white ' ,
2224 ];
23-
2425 /**
2526 * @var string[]
2627 */
@@ -53,23 +54,25 @@ final class Color implements Extension\ColorExtension
5354 'Turquoise ' , 'Violet ' , 'Wheat ' , 'White ' , 'WhiteSmoke ' , 'Yellow ' , 'YellowGreen ' ,
5455 ];
5556
57+ public function __construct (Extension \NumberExtension $ numberExtension = null )
58+ {
59+ $ this ->numberExtension = $ numberExtension ?: new Number ();
60+ }
61+
5662 /**
5763 * @example '#fa3cc2'
5864 */
5965 public function hexColor (): string
6066 {
61- $ number = new Number ();
62-
63- return '# ' . str_pad (dechex ($ number ->numberBetween (1 , 16777215 )), 6 , '0 ' , STR_PAD_LEFT );
67+ return '# ' . str_pad (dechex ($ this ->numberExtension ->numberBetween (1 , 16777215 )), 6 , '0 ' , STR_PAD_LEFT );
6468 }
6569
6670 /**
6771 * @example '#ff0044'
6872 */
6973 public function safeHexColor (): string
7074 {
71- $ number = new Number ();
72- $ color = str_pad (dechex ($ number ->numberBetween (0 , 255 )), 3 , '0 ' , STR_PAD_LEFT );
75+ $ color = str_pad (dechex ($ this ->numberExtension ->numberBetween (0 , 255 )), 3 , '0 ' , STR_PAD_LEFT );
7376
7477 return sprintf (
7578 '#%s%s%s%s%s%s ' ,
@@ -122,12 +125,10 @@ public function rgbCssColor(): string
122125 */
123126 public function rgbaCssColor (): string
124127 {
125- $ number = new Number ();
126-
127128 return sprintf (
128129 'rgba(%s,%s) ' ,
129130 $ this ->rgbColor (),
130- $ number ->randomFloat (1 , 0 , 1 ),
131+ $ this -> numberExtension ->randomFloat (1 , 0 , 1 ),
131132 );
132133 }
133134
@@ -152,13 +153,11 @@ public function colorName(): string
152153 */
153154 public function hslColor (): string
154155 {
155- $ number = new Number ();
156-
157156 return sprintf (
158157 '%s,%s,%s ' ,
159- $ number ->numberBetween (0 , 360 ),
160- $ number ->numberBetween (0 , 100 ),
161- $ number ->numberBetween (0 , 100 ),
158+ $ this -> numberExtension ->numberBetween (0 , 360 ),
159+ $ this -> numberExtension ->numberBetween (0 , 100 ),
160+ $ this -> numberExtension ->numberBetween (0 , 100 ),
162161 );
163162 }
164163
@@ -169,12 +168,10 @@ public function hslColor(): string
169168 */
170169 public function hslColorAsArray (): array
171170 {
172- $ number = new Number ();
173-
174171 return [
175- $ number ->numberBetween (0 , 360 ),
176- $ number ->numberBetween (0 , 100 ),
177- $ number ->numberBetween (0 , 100 ),
172+ $ this -> numberExtension ->numberBetween (0 , 360 ),
173+ $ this -> numberExtension ->numberBetween (0 , 100 ),
174+ $ this -> numberExtension ->numberBetween (0 , 100 ),
178175 ];
179176 }
180177}
0 commit comments