forked from jkapuscik2/design-patterns-php
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathContext.php
More file actions
28 lines (23 loc) · 716 Bytes
/
Context.php
File metadata and controls
28 lines (23 loc) · 716 Bytes
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
<?php
namespace Behavioral\Strategy;
class Context {
private $formatter;
public function __construct (string $outputType) {
switch ($outputType) {
case "json":
$this->formatter = new JSONFormatter();
break;
case "xml":
$this->formatter = new XMLFormatter();
break;
case "string":
$this->formatter = new StringFormatter();
break;
default:
throw new \InvalidArgumentException("{$outputType} is not supported");
}
}
public function formatData (array $data): string {
return $this->formatter->format($data);
}
}