CViewBasic   A
last analyzed

Complexity

Total Complexity 9

Size/Duplication

Total Lines 90
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 90
rs 10
wmc 9
lcom 1
cbo 1

3 Methods

Rating   Name   Duplication   Size   Complexity  
A set() 0 7 1
C render() 0 35 7
A sortOrder() 0 4 1
1
<?php
2
3
namespace Anax\View;
4
5
/**
6
 * A view connected to a template file.
7
 *
8
 */
9
class CViewBasic implements \Anax\DI\IInjectionAware
10
{
11
    use \Anax\DI\TInjectable;
12
13
14
15
    /**
16
    * Properties
17
    *
18
    */
19
    private $template;          // Template file or array
20
    private $templateData = []; // Data to send to template file
21
    private $sortOrder;         // For sorting views
22
    private $type;              // Type of view
23
24
25
26
    /**
27
     * Set values for the view.
28
     *
29
     * @param string/array $template the template file, or array 
0 ignored issues
show
Documentation introduced by
The doc-type string/array could not be parsed: Unknown type name "string/array" at position 0. (view supported doc-types)

This check marks PHPDoc comments that could not be parsed by our parser. To see which comment annotations we can parse, please refer to our documentation on supported doc-types.

Loading history...
30
     * @param array        $data     variables to make available to the view, default is empty
31
     * @param int          $sort     which order to display the views, if suitable
32
     * @param string       $type     which type of view
33
     *
34
     * @return $this
35
     */
36
    public function set($template, $data = [], $sort = 0, $type = 'file')
37
    {
38
        $this->template     = $template;
39
        $this->templateData = $data;
40
        $this->sortOrder    = $sort;
41
        $this->type         = $type;
42
    }
43
44
45
46
    /**
47
     * Render the view.
48
     *
49
     * @return void
50
     */
51
    public function render()
52
    {
53
        switch ($this->type) {
54
55
            case 'file':
0 ignored issues
show
Coding Style introduced by
The case body in a switch statement must start on the line following the statement.

According to the PSR-2, the body of a case statement must start on the line immediately following the case statement.

switch ($expr) {
case "A":
    doSomething(); //right
    break;
case "B":

    doSomethingElse(); //wrong
    break;

}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
56
57
                if (!is_readable($this->template)) {
58
                    throw new \Exception("Could not find template file: " . $this->template);
59
                }
60
61
                extract($this->templateData);
62
                include $this->template;
63
64
                break;
65
66
            case 'callback':
0 ignored issues
show
Coding Style introduced by
The case body in a switch statement must start on the line following the statement.

According to the PSR-2, the body of a case statement must start on the line immediately following the case statement.

switch ($expr) {
case "A":
    doSomething(); //right
    break;
case "B":

    doSomethingElse(); //wrong
    break;

}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
67
    
68
                if (!isset($this->template['callback']) || !is_callable($this->template['callback'])) {
69
                    throw new \Exception("View missing callback.");
70
                }
71
72
                echo call_user_func($this->template['callback']);
73
74
                break;
75
76
            case 'string':
0 ignored issues
show
Coding Style introduced by
The case body in a switch statement must start on the line following the statement.

According to the PSR-2, the body of a case statement must start on the line immediately following the case statement.

switch ($expr) {
case "A":
    doSomething(); //right
    break;
case "B":

    doSomethingElse(); //wrong
    break;

}

To learn more about the PSR-2 coding standard, please refer to the PHP-Fig.

Loading history...
77
78
                echo $this->template;
79
80
                break;
81
82
            default:
83
                throw new \Exception("Not a valid template type: " . $this->type);
84
        }
85
    }
86
87
88
89
    /**
90
     * Give the sort order for this view.
91
     *
92
     * @return int
93
     */
94
    public function sortOrder()
95
    {
96
        return $this->sortOrder;
97
    }
98
}
99