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

PHPConstantsOutputAdapter   A

Complexity

Total Complexity 13

Size/Duplication

Total Lines 48
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 0

Test Coverage

Coverage 0%

Importance

Changes 2
Bugs 0 Features 0
Metric Value
dl 0
loc 48
c 2
b 0
f 0
wmc 13
lcom 0
cbo 0
ccs 0
cts 36
cp 0
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A getName() 0 4 1
A process() 0 12 3
B serialize() 0 17 8
A addSlashes() 0 4 1
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
}