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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
<?php
declare(strict_types=1);
namespace Laminas\View\Renderer;
use Laminas\Filter\FilterChain;
use Laminas\View\Model\ModelInterface;
use Laminas\View\Resolver\ResolverInterface;
use Traversable;
use function method_exists;
/**
* Class for Laminas\View\Model\ConsoleModel to help enforce private constructs.
*
* Note: all private variables in this class are prefixed with "__". This is to
* mark them as part of the internal implementation, and thus prevent conflict
* with variables injected into the renderer.
*
* @deprecated
*/
class ConsoleRenderer implements RendererInterface, TreeRendererInterface
{
/** @var FilterChain|null */
protected $__filterChain; // phpcs:ignore
/**
* @todo handle passing helper manager, options
* @todo handle passing filter chain, options
* @todo handle passing variables object, options
* @todo handle passing resolver object, options
* @param array $config Configuration key-value pairs.
*/
public function __construct($config = [])
{
$this->init();
}
/** @return $this */
public function setResolver(ResolverInterface $resolver)
{
return $this;
}
/**
* Return the template engine object
*
* Returns the object instance, as it is its own template engine
*
* @return ConsoleRenderer
*/
public function getEngine()
{
return $this;
}
/**
* Allow custom object initialization when extending ConsoleRenderer
*
* Triggered by {@link __construct() the constructor} as its final action.
*
* @return void
*/
public function init()
{
}
/**
* Set filter chain
*
* @return ConsoleRenderer
*/
public function setFilterChain(FilterChain $filters)
{
$this->__filterChain = $filters;
return $this;
}
/**
* Retrieve filter chain for post-filtering script content
*
* @return FilterChain
*/
public function getFilterChain()
{
if (null === $this->__filterChain) {
$this->__filterChain = new FilterChain();
}
return $this->__filterChain;
}
/**
* Recursively processes all ViewModels and returns output.
*
* @param string|ModelInterface $model A ViewModel instance.
* @param null|array|Traversable $values Values to use when rendering. If none
* provided, uses those in the composed
* variables container.
* @return string Console output.
*/
public function render($model, $values = null)
{
if (! $model instanceof ModelInterface) {
return '';
}
$result = '';
$options = $model->getOptions();
foreach ($options as $setting => $value) {
$method = 'set' . $setting;
if (method_exists($this, $method)) {
$this->$method($value);
}
unset($method, $setting, $value);
}
unset($options);
$values = $model->getVariables();
if (isset($values['result'])) {
// filter and append the result
$result .= $this->getFilterChain()->filter($values['result']);
}
if ($model->hasChildren()) {
// recursively render all children
foreach ($model->getChildren() as $child) {
$result .= $this->render($child, $values);
}
}
return $result;
}
/**
* @see \Laminas\View\Renderer\TreeRendererInterface
*
* @return bool
*/
public function canRenderTrees()
{
return true;
}
}