/
ContentCollection.php
80 lines (75 loc) · 2.46 KB
/
ContentCollection.php
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
<?php
/*
* This file is part of the PHP-Markdown-Extended package.
*
* Copyright (c) 2008-2024, Pierre Cassat (me at picas dot fr) and contributors
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace MarkdownExtended\Util;
use MarkdownExtended\API\Kernel;
use MarkdownExtended\Exception\UnexpectedValueException;
/**
* A simple Content objects collection
*/
class ContentCollection extends \ArrayIterator
{
/**
* Constructs a new collection being sure that data are all `\MarkdownExtended\API\ContentInterface`
*
* @param array $data
*/
public function __construct(array $data = [])
{
parent::__construct();
foreach ($data as $item) {
$this->append($item);
}
}
/**
* Appends a new collection entry
*
* @param \MarkdownExtended\API\ContentInterface $content
*
* @throws \MarkdownExtended\Exception\UnexpectedValueException it the argument does not implement `\MarkdownExtended\API\ContentInterface`
*/
#[\ReturnTypeWillChange]
public function append($content)
{
if (!is_object($content) || !Kernel::valid($content, Kernel::TYPE_CONTENT)) {
throw new UnexpectedValueException(
sprintf(
'Method "%s" expects a "%s" parameter object, got "%s"',
__METHOD__,
Kernel::CONTENT_INTERFACE,
is_object($content) ? get_class($content) : gettype($content)
)
);
}
parent::append($content);
}
/**
* Sets a collection entry
*
* @param string $index
* @param string $content
*
* @throws \MarkdownExtended\Exception\UnexpectedValueException it the argument does not implement `\MarkdownExtended\API\ContentInterface`
*/
#[\ReturnTypeWillChange]
public function offsetSet($index, $content)
{
if (!is_object($content) || !Kernel::valid($content, Kernel::TYPE_CONTENT)) {
throw new UnexpectedValueException(
sprintf(
'Method "%s" expects the second parameter to implement "%s", got "%s"',
__METHOD__,
Kernel::CONTENT_INTERFACE,
is_object($content) ? get_class($content) : gettype($content)
)
);
}
parent::offsetSet($index, $content);
}
}