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
<?php
declare(strict_types=1);
namespace Laminas\View\Helper;
use Laminas\View\Exception\InvalidArgumentException;
use function array_merge;
use function implode;
use function is_array;
use function is_string;
use const PHP_EOL;
class HtmlObject extends AbstractHtmlElement
{
/**
* Output an object set
*
* @param string $data The data file
* @param string $type Data file type
* @param array $attribs Attribs for the object tag
* @param array $params Params for in the object tag
* @param string $content Alternative content for object
* @throws InvalidArgumentException
* @return string
*/
public function __invoke(
$data = null,
$type = null,
array $attribs = [],
array $params = [],
$content = null
) {
if ($data === null || $type === null) {
throw new InvalidArgumentException(
'HTMLObject: missing argument. $data and $type are required in '
. 'htmlObject($data, $type, array $attribs = array(), array $params = array(), $content = null)'
);
}
// Merge data and type
$attribs = array_merge(['data' => $data, 'type' => $type], $attribs);
// Params
$paramHtml = [];
$closingBracket = $this->getClosingBracket();
foreach ($params as $param => $options) {
if (is_string($options)) {
$options = ['value' => $options];
}
$options = array_merge(['name' => $param], $options);
$paramHtml[] = '<param' . $this->htmlAttribs($options) . $closingBracket;
}
// Content
if (is_array($content)) {
$content = implode(PHP_EOL, $content);
}
// Object header
return '<object' . $this->htmlAttribs($attribs) . '>' . PHP_EOL
. implode(PHP_EOL, $paramHtml) . PHP_EOL
. ($content ? $content . PHP_EOL : '')
. '</object>';
}
}