Completed
Push — master ( 3d3abc...41dbe6 )
by Pavel
39:01 queued 29:15
created

PHPConstantsOutputAdapter::process()   A

Complexity

Conditions 3
Paths 4

Size

Total Lines 12
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 12

Importance

Changes 0
Metric Value
dl 0
loc 12
c 0
b 0
f 0
ccs 0
cts 11
cp 0
rs 9.4285
cc 3
eloc 7
nc 4
nop 4
crap 12
1
<?php
2
3
namespace Paro\EnvironmentParameters\Adapter\Output;
4
5
6
class PHPConstantsOutputAdapter implements OutputAdapterInterface
7
{
8
    public static function getName()
9
    {
10
        return 'php-constants';
11
    }
12
13
    public function process($parameters, $fileName, $env, $date = null)
14
    {
15
    	if (is_null($date)) {
16
    		$date = time();
17
	    }
18
19
        $content = sprintf("<?php\n/** This file is auto-generated during the build process of '%s' environment at %s **/\n", $env, date(DATE_ATOM, $date));
20
        foreach ($parameters as $key => $value) {
21
            $content .= sprintf("define('%s', %s);\n", $key, $this->serialize($value));
22
        };
23
        file_put_contents($fileName, $content);
24
    }
25
26
    /**
27
     * @param $value
28
     * @return string
29
     */
30
    protected function serialize($value)
31
    {
32
        switch (gettype($value)) {
33
            case 'boolean':
34
                return $value ? 'true' : 'false';
35
            case 'array':
36
            case 'object':
37
                return "'" . $this->addSlashes(serialize($value)) . "'";
38
            case 'NULL':
39
                return "null";
40
            case 'integer':
41
            case 'double':
42
                return $value;
43
            default:
44
                return "'" . $this->addSlashes($value) . "'";
45
        }
46
    }
47
48
    private function addSlashes($value)
49
    {
50
        return str_replace("'", "\\'", $value);
51
    }
52
53
}