PluginProbe
WCPOS – Point of Sale (POS) plugin for WooCommerce / 1.10.13
WCPOS – Point of Sale (POS) plugin for WooCommerce v1.10.13
1.10.19 1.10.18 1.10.17 1.10.16 1.10.15 1.10.13 1.10.14 1.10.12 1.10.11 1.10.10 1.10.9 1.10.8 untagged-3d9b7ccddc54df87c672 1.10.7 1.10.6 1.10.5 1.10.3 1.10.4 1.10.2 1.10.1 1.10.0 1.9.17 1.9.15 1.9.16 1.9.14 All 163 releases
woocommerce-pos / vendor / ramsey / collection / src / Collection.php

Collection.php in WCPOS – Point of Sale (POS) plugin for WooCommerce 1.10.13, at vendor/ramsey/collection/src/Collection.php

105 lines 2.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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 * The type of elements stored in this collection.
80 *
81 * A collection's type is immutable once it is set. For this reason, this
82 * property is set private.
83 */
84 private string $collectionType;
85
86 /**
87 * Constructs a collection object of the specified type, optionally with the
88 * specified data.
89 *
90 * @param string $collectionType The type (FQCN) associated with this
91 * collection.
92 * @param array<array-key, T> $data The initial items to store in the collection.
93 */
94 public function __construct(string $collectionType, array $data = [])
95 {
96 $this->collectionType = $collectionType;
97 parent::__construct($data);
98 }
99
100 public function getType(): string
101 {
102 return $this->collectionType;
103 }
104 }
105