-
Notifications
You must be signed in to change notification settings - Fork 0
/
CollectionInterface.php
68 lines (60 loc) · 1.63 KB
/
CollectionInterface.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
<?php
/**
* This file is part of the Cubiche package.
*
* Copyright (c) Cubiche
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Cubiche\Core\Collections;
use Cubiche\Core\Comparable\ComparatorInterface;
use Cubiche\Core\Specification\SpecificationInterface;
/**
* Collection Interface.
*
* @author Karel Osorio Ramírez <[email protected]>
* @author Ivannis Suárez Jerez <[email protected]>
*/
interface CollectionInterface extends \Countable, \IteratorAggregate
{
/**
* Clears the collection, removing all elements.
*/
public function clear();
/**
* @return bool
*/
public function isEmpty();
/**
* Gets a native PHP array representation of the collection.
*
* @return array
*/
public function toArray();
/**
* Returns a new collection sorted by the given criteria.
*
* @param ComparatorInterface $criteria
*
* @return CollectionInterface
*/
public function sorted(ComparatorInterface $criteria);
/**
* Returns a view of the portion of this collection starting at the specified $offset, with size equals to $length.
*
* @param int $offset
* @param int $length
*
* @return CollectionInterface
*/
public function slice($offset, $length = null);
/**
* Find all elements that match with a given specification in this collection.
*
* @param SpecificationInterface $criteria
*
* @return CollectionInterface
*/
public function find(SpecificationInterface $criteria);
}