Subversion-Projekte lars-tiefland.laravel_shop

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 1
<?php
2
 
3
/**
4
 * This file is part of the ramsey/collection library
5
 *
6
 * For the full copyright and license information, please view the LICENSE
7
 * file that was distributed with this source code.
8
 *
9
 * @copyright Copyright (c) Ben Ramsey <ben@benramsey.com>
10
 * @license http://opensource.org/licenses/MIT MIT
11
 */
12
 
13
declare(strict_types=1);
14
 
15
namespace Ramsey\Collection;
16
 
17
/**
18
 * A collection represents a group of objects.
19
 *
20
 * Each object in the collection is of a specific, defined type.
21
 *
22
 * This is a direct implementation of `CollectionInterface`, provided for
23
 * the sake of convenience.
24
 *
25
 * Example usage:
26
 *
27
 * ``` php
28
 * $collection = new \Ramsey\Collection\Collection('My\\Foo');
29
 * $collection->add(new \My\Foo());
30
 * $collection->add(new \My\Foo());
31
 *
32
 * foreach ($collection as $foo) {
33
 *     // Do something with $foo
34
 * }
35
 * ```
36
 *
37
 * It is preferable to subclass `AbstractCollection` to create your own typed
38
 * collections. For example:
39
 *
40
 * ``` php
41
 * namespace My\Foo;
42
 *
43
 * class FooCollection extends \Ramsey\Collection\AbstractCollection
44
 * {
45
 *     public function getType()
46
 *     {
47
 *         return 'My\\Foo';
48
 *     }
49
 * }
50
 * ```
51
 *
52
 * And then use it similarly to the earlier example:
53
 *
54
 * ``` php
55
 * $fooCollection = new \My\Foo\FooCollection();
56
 * $fooCollection->add(new \My\Foo());
57
 * $fooCollection->add(new \My\Foo());
58
 *
59
 * foreach ($fooCollection as $foo) {
60
 *     // Do something with $foo
61
 * }
62
 * ```
63
 *
64
 * The benefit with this approach is that you may do type-checking on the
65
 * collection object:
66
 *
67
 * ``` php
68
 * if ($collection instanceof \My\Foo\FooCollection) {
69
 *     // the collection is a collection of My\Foo objects
70
 * }
71
 * ```
72
 *
73
 * @template T
74
 * @extends AbstractCollection<T>
75
 */
76
class Collection extends AbstractCollection
77
{
78
    /**
79
     * Constructs a collection object of the specified type, optionally with the
80
     * specified data.
81
     *
82
     * @param string $collectionType The type or class name associated with this
83
     *     collection.
84
     * @param array<array-key, T> $data The initial items to store in the collection.
85
     */
86
    public function __construct(private readonly string $collectionType, array $data = [])
87
    {
88
        parent::__construct($data);
89
    }
90
 
91
    public function getType(): string
92
    {
93
        return $this->collectionType;
94
    }
95
}